com.txt
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:6k
- 1. 1.1 OOP: 类, 对象, 继承,重载,重写,引用;
- OOC:组件,组件实例(设计状态/运用状态), 引用;
- 1.2 OOP{cpp/java/c#/vb.net/...}
- OOC{COM/EJB/CORBA}(Component Object Model) COM+(提供组件运行平台和企业级服务)
- /DCOM(分布式的COM)
- 1.3 组件的特征(OOC):
- 1. 二进制封装;
- 2. BITS原则: (Bit Service)原则;
- 2.1 软件实体通过接口对外提供服务;
- 2.2 软件实体通过接口依赖其它的软件实体;
- 3. 组件需要部署和安装;独立编译/安装/部署,独立的软件实体;
- 1.4 组件接口定义:
- 1.4.1 刻画组件的功能;完整刻画;
- 1.4.2 借口的定义语言:c/cpp;java/c#/vb.net;
- 1.4.3 如果采用 MIDL, 只能定义接口;
- 1.5 IDL语言基础:
- import, 调用其它接口定义文件;
- interface, 定义接口;
- coclass, 定义接口实现者,COM类,或COM构件;
- library, 组件库;对应一个具体组件;
- MFC: CObject;
- COM: IUnknown;//提供组件功能查询;查的是接口;和 new
- 组件(library)/构件(coclass)/接口(interface);组件实体;
- 1.6 COM组件实体的定义方法;
- 1.1 GUID, 512位随机数据;GUIDGen.exe;
- [头:uuid,指定名字;
- helpstring,说明性信息;pointer_default定义借口指针的一种模式;
- version,版本;
- default, ]
- 名字
- {
- }
- 1.7 通过IDL,编写add, sub;使用midl.exe编译成C;
-
- 1.9 ATL库中的方法宏:
- 1.9.1 方法声明宏:STDMETHOD;
- 1.9.2 方法实现宏:STDMETHODIMP;
- 1.10 com 安装和卸载 regsvr32.exe *.dll; regsvr32.exe -u *.dll
- 2. COM接口定义技术;
- 2.1 Custom,自定义接口; 必须使用IDL文件;
- 2.1.1 IUnknown接口;
- 2.1.1.1 管理组件的生命周期;
- 2.1.1.2 管理组件的功能列表;
- 2.1.2 IUnknonw的实现(CComObjectRootEx);
- 2.1.2.1 和生命周期相关(add/release)
- DECLARE_PROTECT_FINAL_CONSTRUCT;
- CComObjectRootEx<线程类型>
- 2.1.2.2 接口映射表;
- 将接口类型添加到接口映射表中,否则QueryInterface找不到;
- 2.1.2.3 COM资源使用原则“谁使用谁释放”;
- 3. 练习,使用WebBrowser组件熟悉COM的基本概念和特征。
- 3.1 IHTML****;
- 3.2 IWebBrowser;
- 3.3 IHTMLDocument; IHTMLDocument2,IHTMLDocument3,IHTMLDocument4
- 3.4 IHTMLElement;
- 3.5 IHTMLImgElement
- 4. COM结构;
- 4.1 COM层次结构: 组件中包含多个构件,构件实现多个接口;
- 4.2 接口映射表(同一个构件上的接口进行映射);
- 4.3 构件映射表(同一个组件上构件的映射);
- 4.4 ATL应用程序实体; CComModule _Module;
- 4.3 ATL在DllMain方法中,组装COM组件;
- MFC WinMain CWinApp theApp 多个窗口 消息映射
- ATL DllMain CComModule _Module 多个构件 接口映射 构件映射
- MFC initialInstance
- ATL _Module.init;
- DllCanUnloadNow,判断组件是否能够卸载;
- DllGetClassObject,被CoCreateInstance方法调用,生成构件;_Module.GetClassObject
- DllRegisterServer,将组件的ID和名称的关联信息写入注册表;
- DllUnregisterServer,将组件的ID和名称关联信息删除;
- 5. COM数据类型列表;
- HRESULT,32整数;代表执行的结果;0表示正确,非零表示错误;
- BSTR, 宽字符串;使用Unicode码;(一个字符,两个字节)
- 前两个字节,对应字符串中字符个数,后面依次为UNICDODE码;
- "hello", [h][e][l][l][o][ ]
- [0][5][0][h][0][e][0][l][0][l][0][o]
- VARIANT 智能型数据类型;(万能型)
- vt属性,表示当前变量所用作的类型;
- 值,根据类型不同在不同属性中;
- 6. 动化接口; 不需要IDL文件;
- 1. 自动化接口,主要支持vb,javascript, vbscript, actionscript;调用时不需要头文件;
- 2. 自动化接口是对自定义接口的扩展, 自动化接口也从IUnknown继承;
- 3. 自动化接口从IDispatch继承;
- 4. 不使用头文件调用IDispatch接口;
- HRESULT Invoke(
- DISPID dispIdMember, //调用方法的id;
- REFIID riid, LCID lcid, //保留字,IID_NULL;
- WORD wFlags, //Local_system_default;
- DISPPARAMS FAR *pDispParams, //
- VARIANT FAR *pVarResult, //
- EXCEPINFO FAR *pExcepInfo,
- unsigned int FAR *puArgErr);
- 5. CLSIDFromProgID,根据组建名字查找组建CLSID;
- 6. GetIDsOfNames;
- 7. DISPPARAMS;
- 7. COM中的结构,数组,智能指针
- 7.1 BSTR int VARIANT,基本数据类型
- 7.2 自定义接口/结构;
- 7.3 DTO(只有成员变量,没有方法)
- 7.4 CoTaskMemAlloc/CoTaskMemFree; SysAlloString/SysFreeString;
- 7.5 从COM中获取结构或结构数组;
- 7.6 向COM中传递结构或结构数组;
- 7.7 COM中的属性;
- 7.8 接口智能指针;CComPtr/CComQIPtr;
- 7.9 BSTR智能指针;_bstr_t(<comdef.h>)/CComBSTR(<atlbase.h>);
- 7.10 VARIATN智能指针;_variant_t /CComVariant ;
- 7.11 智能指针:1)是个类;2)管理一个指针;3)自动释放(析构)方法中释放;
- 7.12 智能指针分类(工具类Utility Class)
- 7.12.1 COM接口类 CComPtr/CComQIPtr;
- 7.12.2 字符串指针 CComBSTR/_bstr_t;
- 7.12.2 万能型变量 CComVariant/_variant_t;
- 8. COM回调接口;
- 8.1 自定义回调接口;
- 8.1.1 回调的概念;
- 8.1.2 回调三要素:1,回调接口定义;2,私有成员变量;3,公共的设置方法;
- 8.2 自定义COM回调接口(IUnknown/IDispatch)
- 8.2.1 IUnknonw类型的回调接口;
- 8.2.2 实现IUnknown接口;
-
- 8.3 COM事件的定义和处理
- 3. COM组件的实现技术;
- 3.1 接口映射;
- 3.2 多接口实现;
- 4. COM组件的回调和事件;
- 5. COM组件的合成与集合;