COM组件编程基础.PPTVIP

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译生成COM组建 查看发布文件 其中DEF文件中4个函数的作用是: ?DllCanUnloadNow 当调用结束时负责卸载COM ?DllGetClassObject 客户程序通过它访问COM,它创建由 CLSID制定类型的对 象,该对象就是在客户程序中调用CoCreateInstance()中请求对象 的类工厂。 ?DllRegisterServer 在注册表中注册该COM组件(服务器) 注意:当在命令行中执行regsvr32命令时调用该函数 例如:regsvr32 D:\ComDll\ComDll\Debug\ComDll.dll ?DllUnregisterServer 从注册表中卸载该COM组件(服务器) 注意:当在命令行中执行regsvr32命令时调用该函数 例如:regsvr32 -u D:\ComDll\ComDll\Debug\ComDll.dll 说明:ATL是自注册的,即在生成DLL或EXE时自动组册 测试程序之建立 为“测试ComOneDll”菜单项添加消息映射函数 在函数中添加代码 WINOLEAPI CoCreateInstance( REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, //接口标识符 LPVOID FAR* ppv); //返回指向借口函数的指针 其中:API函数CoCreateInstance的作用是调用COM,返回指向接口 函数的指针。实际是负责调用DEF文件中给出的 DllGetClassObject()实例化组件对象 (类工厂)的函数。 ? rclsid: DllGetClassObject()函数用该类标识符实例化组件对象 ? pUnkOuter:COM的IUnknown,用ATL生成的COM取值NULL ? dwClsContext:表明COM服务器程序运行所在的上下文(环境),这 个参数指定了包含被请求COM的服务器程序类型。 dwClsContext取值范围有6个,在这里仅给出与我们编程有关的3个 CLSCTX_INPROC_SERVER:COM服务器程序是一个DLL,表明 COM与客户程序运行在同一进程中 CLSCTX_LOCAL_SERVER : COM服务器程序是一个EXE,表明 COM程序运行在一个单独的进程中 CLSCTX_ALL:代表任何一种均可以 API函数CoCreateInstance原形如下: 编译、运行结果 regsvr32 e:\ALTCOM08\AltToCom1\Debug\AltToCom1.dll 手工注册: 开始─?运行 §10. 3 基于ATL之EXE文件实现COM 步骤1:建立ATL项目 步骤2:向项目中添加对话框资源 步骤3:构造窗口类 首先向项目中添加一个C++类 §10. 1 COM简介 一、什么是COM COM (Component Object Model): 组件对象模型 其中: 1. 它定义了一套为构建一个组件所必需遵循的规则。或 者说它是一个说明如何建立可动态交替更新组件的规 范,该规范为客户和组件提供保证能够互操作应该遵 循的标准; 2. 它定义了组件和它们的客户之间互相作用的方式。采 用客户进程直接调用组件中的方法,使得组件和客户 端无需任何中介组件就能互相联系; 3. COM组件有可执行代码组成,即以二进制代码形 式重用,一般通过DLL/EXE形式发布,且通过GUID 来保证每个COM对象是全球唯一的。 说明: 1. COM不是一类程序的扩展名,也不是一种程序设计 语言; 2. COM可利用DLL来给组件提供动态链接的能力,但 COM不是DLL; 3. COM可采用各种语言进行编写(语言无关性),同一 个软件中不同组件可以使用不同的语言和工具开发;

文档评论(0)

kch + 关注
实名认证
文档贡献者

教师资格证持证人

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

领域认证该用户于2023年10月08日上传了教师资格证

1亿VIP精品文档

相关文档