基于COM接口编程基础I.ppt
- 格式:ppt
- 大小:2.14 MB
- 文档页数:98
C++通过COM接⼝操作PPT⼀、背景说明在VS环境下,开发C++代码操作PPT,⽀持对PPT模板的修改。
包括修改⽂本标签、图表、表格。
满⾜⼤多数软件⽣成PPT 报告的要求,先⼿⼯创建好PPT模板,在程序中修改模板数据。
⼆、开发环境构建通过VS2012的Class Wizard创建PowerPoint和Excel的COM接⼝;由于需要操作PPT中的图表,⽽图表的数据使⽤Excel存储的,需要修改图表的数据就得⽣成Excel的COM接⼝。
1.1 进⼊类向导1.2 添加PowerPoint COM接⼝1.3 添加Excel COM接⼝选中所有的COM接⼝,⽣成接⼝⽂件。
三、定义PPT⽂件基础操作函数(头⽂件略)3.1 定义PPT应⽤基础对象class CPPTObject{public:CApplication m_PPTApp;CSlides m_Slides;CSlide m_curSlide;CPresentation m_Presentaion;};3.2 启动PowerPoint软件,调⽤COM接⼝需要安装Office// 创建PPT应⽤,启动powerpoint程序。
bool CPPTUtil::CreatePPTApplication(){COleException exception;LPCSTR str = "Powerpoint.Application";if(!m_pPPTObject->m_PPTApp.CreateDispatch(str, &exception)){AfxMessageBox(exception.m_sc, MB_SETFOREGROUND);return false;}m_pPPTObject->m_PPTApp.put_Visible(true);return true;}3.3 打开PPT模板⽂件。
修改PPT内容前,先打开PPT。
COM编程技术基础前言所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。
通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。
显然,在COM规范下将能够以高度灵活的编程手段来开发、维护应用程序。
可以将一个单独的复杂程序划分为多个独立的模块进行开发,这里的每一个独立模块都是一个自给自足的组件,可以采取不同的开发语言去设计每一个组件。
在运行时将这些组件通过接口组装起来以形成所需要的应用程序。
构成应用程序的每一个组件都可以在不影响其他组件的前提下被升级。
这里所说的组件是特指在二进制级别上进行集成和重用而能够被独立生产获得和配置的软件单元。
COM规范所描述的即是如何编写组件,遵循COM标准的任何一个组件都是可以被用来组合成应用程序的。
至于对组件采取的是何种编程语言则是无关紧要的,可以自由选取。
作为一个真正意义上的组件,应具备如下特征:1)实现了对开发语言的封装。
2)以二进制形式发布。
3)能够在不妨碍已有用户的情况下被升级。
4)在网络上的位置必须能够被透明的重新分配。
这些特征使COM组件具有很好的可重用性,这种可重用性与DLL一样都是建立在二进制基础上的代码重用。
但是COM在多个方面的表现均要比DLL的重用方式好的多。
例如,在DLL中存在的函数重名问题、各编译器对C++函数名称修饰的不兼容问题、路径问题以及与可执行程序的依赖性问题等在COM中通过使用虚函数表、查找注册表等手段均被很好的解决。
其实COM组件在发布形式上本身就包扩DLL,只不过通过制订复杂的COM 规范,使COM本身的机制改变了重用的方法,能够以一种新的方法来利用DLL并克服DLL 本身所固有的一些缺陷,从而实现了更高层次的重用。
客户程序在与COM组件进行交互时,只需知道与哪个COM对象进行交互即可而不必关心组件模块的具体名称和位置,即COM对象的位置对客户是透明的。
COM编程入门本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念。
内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件。
本文不包括如何编写自己的COM对象和接口。
COM即组件对象模型,是Component Object Model取前三个字母的缩写,这三个字母在当今Windows的世界中随处可见。
随时涌现出来的大把大把的新技术都以COM为基础。
各种文档中也充斥着诸如COM对象、接口、服务器之类的术语。
因此,对于一个程序员来说,不仅要掌握使用COM的方法,而且还要彻底熟悉COM的所有一切本文由浅入深描述COM的内在运行机制,教你如何使用第三方提供的COM对象(以Windows外壳组件Shell为例)。
读完本文后,你就能掌握如何使用Windows操作系统中内建的组件和第三方提供的COM对象。
本文假设你精通C++语言。
在例子代码中使用了一点MFC和ATL,如果你不熟悉MFC 和ATL也没关系,本文会对这些代码进行完全透彻的解释。
本文包括以下几个部分:COM到底是什么?——COM标准的要点介绍,它被设计用来解决什么问题?基本元素的定义——COM术语以及这些术语的含义。
使用和处理COM对象——如何创建、使用和销毁COM对象。
基本接口——描述IUnknown基本接口及其方法。
掌握串的处理——在COM代码中如何处理串。
应用COM技术——例子代码,举例说明本文所讨论的所有概念。
处理HRESULT——HRESULT类型描述,如何监测错误及成功代码。
COM到底是什么?简单地说,COM是一种跨应用和语言共享二进制代码的方法。
与C++不同,它提倡源代码重用。
ATL便是一个很好的例证。
源码级重用虽然好,但只能用于C++。
它还带来了名字冲突的可能性,更不用说不断拷贝重用代码而导致工程膨胀和臃肿。
使用DLLs在二进制级共享代码。
这也是Windows程序运行的关键——重用kernel32.dll, user32.dll等。