- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 五年级下-数学-因数和倍数-第1课时终.ppt
- 品牌策划内容大纲.doc
- 和谐、高效、共赢.doc
- 中外会展经济发展的差距.doc
- 专题一 第一单元练习.doc
- Autoexec.bat文件制作.doc
- 中文planning02.ppt
- 七年级下册历史专题复习__人教版.初一下.ppt
- 资金预算方案.doc
- 三年级数学人教版第五册期末复习试题(一).doc
- 云南省宣威市事业单位考试职业能力倾向测验(自然科学专技类C类)强化训练题库附答案.docx
- 2025年甘肃省合作市事业单位考试(自然科学专技类C类)职业能力倾向测验强化训练试题集及答案1套.docx
- 2025年福建省漳平市职业能力倾向测验事业单位考试(综合管理类A类)试题附答案.docx
- 2025年研究基地自评报告.docx
- 2025年子矿业有限公司南山铅矿扩建项目环境影响报告书的批复.docx
- 2025年辽宁省灯塔市事业单位考试(医疗卫生类E类)职业能力倾向测验知识点试题及答案1套.docx
- 云南省景洪市事业单位考试(自然科学专技类C类)职业能力倾向测验重点难点精练试题附答案.docx
- 2025年湖南省沅江市事业单位考试职业能力倾向测验(综合管理类A类)强化训练题库最新.docx
- 模糊控制变频双转子压缩机相关行业投资规划报告.docx
- 2025年中国化工集团化工建设项目可行性研究报告内容和深度的规定.docx
最近下载
- 《开国大典》ppt课件.pptx VIP
- Unit 4 Stage and screen 课件(共30张ppt) 外研版(2019)高中英语必修第二册.pptx VIP
- 2025年青岛职业技术学院单招职业适应性测试题库及答案一套.docx VIP
- 2024年《知识产权法》形考任务1答案.pdf VIP
- 高一数学备课组长工作总结.pptx VIP
- Moldflow模流分析入门与实战 课件 1.5 创建浇注系统.pptx
- BEVERLY 比佛利 QZBW20S-16净水机 说明书.pdf
- 困难退役军人帮扶计划书.pptx VIP
- 【优质课】《马克思主义的诞生与传播》说课课件.pptx VIP
- 畜产品质量安全知识课件.pptx
文档评论(0)