现在的位置: 首页 > 综合 > 正文

《COM技术内幕》阅读笔记第9章

2018年10月08日 ⁄ 综合 ⁄ 共 897字 ⁄ 字号 评论关闭

简化编程工作:
    1.客户端的简化:什么是智能指针 接口指针类的实现 接口指针的使用 引用计数 赋值 未知接口赋值 带有智能指针客户的实现     C++包装类
    2.服务端的简化:未知接口基类 CUnknown实现INondelegatingUnknown DECLEAR_IUNKNOWN实现代理未知接口  GetOuterUnknown(也是自动选择),CUnknown构造函数传递指向外部未知接口的指针作参数(供GetOuterUnknown使用),CUnknown::Init虚函数创建被包容或聚合的组件 CUnknown::FinalRelease在CUnknown::NondelegatinRelease删除某个组件前调用
                  类基类:必须实现CreateFunction创建组件 必须从CUnknown继承得到  必须填充CFactoryData结构并接入全局数组g_FactoryDataArray(指定哪些组件可以被创建)
                  CUnknown和CFactory的使用代码
     3.集成步骤:
              编写组件实现类:从CUNknown或其派生类派生出待实现的组件 用DECLARE_IUNKNOWN宏实现代理未知接口 组件构造函数中初始化CUNknown 实现NondelegatingQueryInterface,加入此组件支持而其他基类不支持的接口 可以重载Init做一些初始化处理  组件删除前可以重载FinalRelease做清理工作 给组件实现以静态CreateInstance 实现组件支持的接口
              对同一DLL中的其他组件,重复上面
              编写类厂:建立文件,包含全局数组g_FactoryDataArray[CFactoryData]  定义g_FactoryDataArray数组并用DLL中提供的所有组件信息填充 定义变量g_cFactoryDataEntries,g_FactoryDataArray中组件的个数
              编一个定义DLL入口点的DEF文件。

抱歉!评论已关闭.