网站大量收购独家精品文档,联系QQ:2885784924

第19章 组件对象模型.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第19章 组件对象模型

第19章 VC++组件对象模型(COM) 在软件工程项目中,一个软件的不同功能模块尽量要以“高内聚,低耦合”为原则。COM是组件对象模型的简写,在大型的软件开发过程中,为了更好地提高内聚和降低耦合,常常会使用到COM组件。COM组件可以将不同功能的代码完全分离开来,以最小代价提高内聚度。 本章的主要内容有: 什么是COM:读者将了解到COM的基本知识。 COM接口:读者将了解到COM接口的基本知识。 使用COM技术开发Office插件:读者将学会使用COM技术来编写Office Word软件的插件。 COM的包容、集合和继承:读者将了解到C++的继承和COM的包容、集合和继承之间的联系和区别。 19.1 什么是COM COM是Component Object Model(组件对象模型)的缩写。 不管用户需要什么样的产品,以下两个条件是必须要保证的: 高效:使用软件产品可以做的工作,一般而言,使用手工劳动一样能达到同样效果,只是软件可以快速处理相同工作,在具备多种软件选择中,高效的软件具备无可比拟的优势。 健壮:如果一个软件系统出现很小的问题就会异常终止,导致整个系统工作无法进行,并且需要系统管理员不厌其烦地重启服务器,这样的软件还会有人购买吗?因此,健壮性也是软件产品的一个必要条件。 19.2 COM接口 COM的接口都必须从IUnknown继承,犹如在MFC中,CObject类的地位。IUnknown有三个重要的函数: (1)QueryInterface()函数。 该函数的原型如下: HRESULT __stdcall QueryInterface(const IIDiid,void **ppv); 该函数的参数的含义是: iid:标志客户所需的接口。是”一个接口标志符“结构(IID)”。 ppv:QueryInterface用来存放所请求接口的地址。 (2)Addref()函数:用于增加引用计数。 (3)Release()函数:用于释放引用计数。 19.3 实例19.1-COM的使用 本节讲解COM的使用,对于Office Word,可能大多数读者都十分熟悉。不过可能并不是每个读者都会遇到需要在Office Word进行二次开发。 本节就是介绍使用COM来编写Office插件的例子。步骤如图19.1所示。 19.3.1 使用VC6.0创建ATL COM应用程序 使用VC6.0创建ATL COM应用程序步骤如下: (1)单击“File”菜单,选中“New”命令,新建一个VC6.0项目。 (2)在“Projects”选项卡中,选中“ATL COM AppWizard”ATL COM应用程序向导,并命名为“HelloOffice”,如图19.2所示。 (3)在ATL COM项目应用程序向导中,选择服务类型为“DLL”,并且选中“Allow merging of proxy/stub code”。 19.3.2 创建新的ATL对象 要是ATL COM项有所作为,必须建立自定义的ATL对象。 单击“Insert”菜单,选中“New ATL Object”选项,在弹出的ATL对象向导对话框中选中相应“Objects”对应右侧的“Simple Object”选项,如图19.4所示,选中后单击“Next”按钮。 如图所示,在单击“Next”按钮后,弹出的对话框如图所示,填写对象名为“HelloMyATL”。 19.3.3 实现_IDTExtensibility2接口 本实例需要通过导入类型库来实现_IDTExtensibility2接口。 在类视图中的新加的类上点鼠标右键,在弹出的右键菜单中选中“Implement Interface”选项,如图所示。如图所示,在弹出的实现接口对话框中单击“Add Typelib”按钮。 19.3.4 通知Office并加载组件接口 通过前文的步骤,Office插件框架已经形成了,但Office如何将开发者开发的插件加载进来呢?Office有很多不同的应用软件,如Word和Excel,它们怎么知道怎么加载属于自己的插件呢?与上一章讲解的原理是一样的,就是使用注册表,必须在注册表加入相应的键值,打开项目的文件视图,找到“Resource File”文件夹下的rgs文件,添加代码如下: (详细内容请参照本书) 19.3.4 导入Office接口文件 要与Office关联起来,需要导入Office给其他开发者提供的二次接口文件。一个是“MSO.dll”,另一个是“MSWORD.OLB”。在“stdafx.h”头文件中加入如下语句: #import C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE10\\mso.dll \ ren

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档