- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第19章 组件对象模型(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 \ rename_
您可能关注的文档
最近下载
- 2011届高考化学一轮复习专题模拟检测:专题5_氮族元素及其化合物.doc VIP
- Unit6大单元教学整体单元分析课件人教版九年级英语全册.ppt
- 教育信息化背景下跨学科教学资源的数字化建设.docx
- 城镇直埋供热管道电预热安装施工工法(技术方案).pdf VIP
- 2014造口治疗师培训个案发展计划及产品册造口学校.pdf VIP
- 标准化乡镇卫生院制度.doc
- 2026年湖南科技职业学院单招职业技能考试必刷测试卷完美版.docx VIP
- 2024年9月8日贵州省黔西南州州直遴选(事业单位考聘)笔试真题及答案解析.doc VIP
- 2025年兵棋章节答案.docx VIP
- 酒店工程部计件量化方案(3篇).docx VIP
文档评论(0)