读书笔记-COM

OLE是Object Linking and Embedding,对象链接与嵌入技术,比如我们在Word中插入一个Excel图表,用的都是OLE技术 《Inside OLE》 COM component object model ActiveX其实说起来是OLE2.0,它提供了一种更好的组件封装方式,让我们可以搭积木一样来制作软件 2:static_case(num) 是个特殊转换记号,可将整数num转换为对应枚举成员。 const_case reinterpret_case//重新解释 案件 cl makefile tangram MFC风格前缀 C 类 I 接口 m_ 成员变量 s_ 静态成员变量 g_ 全局变量匈牙利命名规范 p 指针 pI 指向接口的指针 b 布尔型 I 整形 dw DWORD c 计数 sz 字符数组 usz 宽字符数组第一章 组件 1.1 使用组件的优点 1.1.1应用的定制 1.1.2组件库 1.1.3分布式组件 1.2 对组件的要求 1.2.1动态连接 1.2.2封装性 组件必须将其实现的编程语言隐藏起来 组件必须以二进制的形式发布 组件必须可以在不妨碍已有用户的情况下被升级 组件在网络的位置必须是透明的 1.3 COM 1.3.1COM组件是以Win32动态连接库(DLL)或可执行文件(EXE)的形式发布的可执行代码组成的. 1.3.2COM不是 COM不是DLL,是利用DLL来给组件提供动态连接的能力. 1.3.3COM库 1.3.4COM方法 1.3.5COM超越了用户的需求第二章 接口 COM的接口是一个包含一个函数指针数组的内存结构 2.1 接口的作用 2.1.1可复用应用框架 2.1.2COM接口的其他优点 2.2 COM接口的实现 2.2.1代码约定 #include OBJBASE.H #define interface struct interface 接口 struct的成员将自动具有共有的属性 2.2.2一个完整的例子 trace//踪影 2.2.3非接口通信 2.2.4实现细节 2.3接口理论:第二部分 2.3.1接口的不变性 2.3.2多态性 2.4接口的背后 2.4.1虚函数表 2.4.2vtbl指针及实例数据 2.4.3多重实例 2.4.4不同的类相同的vtbl 第三章 3.1接口查询 3.1.1关于IUnknown stdcall 将在返回到调用者之前将参数从栈中删除 #include UNKNWN.H interface IUnknown { virtual HRESULT _ _stdcall Queryinterface(const IIK&iid,void**ppv)=0; virtual ulong _ _stdcall addref()=0; virtual ulong _ _ stdcall release()=0; } 3.1.2IUnknown指针的获取 IUnknown指针的获取 IUnknown*createInstance(); 3.1.3关于Queryinterface的用法 3.1.5Queryinterface的实现规则 3.1.6关于类型转换 3.1.7一个完整的例子 Queryinterface函数 const IIK&iid 参数接口标识符 客户所需的接口 void**ppv存放所请求的指针 3.2关于QueryInterface的实现规则 3.2.1同一IUnknown 3.2.2客户可以获取曾经得到过的接口 3.2.3可以再次获取已经拥有的接口 3.2.4客户可以从任何借口返回到起始接口 3.2.5若能够从某接口获取其特定接口,则从任意借口都将获取此接口 3.3QueryInterfac定义了组件//查询接口接口集 3.4组件新版本的处理 3.4.1何时需要建立一个新版本 3.4.2不同版本接口的命名 3.4.3隐含和约 4 引用计数 4.1生命期控制 4.2引用记数简介 4.2.1引用记数接口 4.2.2 AddRef和Release的实现//参考 发行 4.3何时进行引用计数 4.3.1引用计数的优化 4.3.2引用计数的规则 5动态连接 5.1组件的创建从DLL中引出函数 extern "c" IUnknown *CreateInstance { IUnknown* PI=(IUnknown*)(void *)new CA; PI->AddRef(); return PI; } 5.2客户和组件的划分 5.3对象串 6.关于HRESULT、GUID、注册表及其他细节 6.1HRESULT //result 结果 6.2GUID 6.3注册表 6.4COM库函数 CLSCTX

你可能感兴趣的:(读书笔记-COM)