- 1
- 0
- 约4.09千字
- 约 27页
- 2017-12-23 发布于上海
- 举报
高级软件工程09VC与COM、CORBA与COM比较
* 6、COM与类库 (1)类库的作用 (2)MFC (3)ATL (4)IDE COM与类库 直接利用 C++语言开发 COM 程序 需要处理许多重复性工作 例如 IUnknown 接口的实现 类厂的实现 DLL程序入口函数 等 建立一套标准的类库非常有意义 VC++提供了两套这样的类库: MFC库 ATL库 (1)类库的作用 COM与类库 (2)MFC 基本思路: 采用内嵌接口类成员的方式实现多接口COM对象 未采用多重继承方式 实现方式: CCmdTarget提供COM对象实现的所有支持 利用接口映射表实现任意多个接口 COleObjectFactory实现通用类厂 COM与类库 #define DECLARE_INTERFACE_MAP() \ private: \ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \ protected: \ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \ static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); \ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \ CCmdTarget定义的接口映射表(afxwin.h) COM与类库 struct AFX_INTERFACEMAP_ENTRY { const void* piid; // the interface id (IID) (NULL for aggregate) size_t nOffset; // offset of the interface vtable from m_unknown }; struct AFX_INTERFACEMAP { const AFX_INTERFACEMAP* (PASCAL * pfnGetBaseMap)(); //NULL is root class const AFX_INTERFACEMAP_ENTRY* pEntry; // map for this class }; 宏定义中用到的数据结构(afxwin.h) COM与类库 #define BEGIN_INTERFACE_MAP(theClass, theBase) \ const AFX_INTERFACEMAP* PASCAL theClass::_GetBaseInterfaceMap() \ { return theBase::interfaceMap; } \ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \ { return theClass::interfaceMap; } \ AFX_COMDAT const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \ { theClass::_GetBaseInterfaceMap, theClass::_interfaceEntries[0], }; \ AFX_COMDAT const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \ { \ #define INTERFACE_PART(theClass, iid, localClass) \ { iid, offsetof(theClass, m_x##localClass) }, \ #define END_INTERFACE_MAP() \ { NULL, (size_t)-1 } \ }; \ 接口映射表的进一步定义(afxdisp.h) COM与类库 BEGIN_INTERFACE_MAP(COMPONENT, CCmdTarget) INTERFACE_PART(COMPONENT, IID_IX, IX) INTERFACE_PART(COMPONENT, IID_IY, IY) END_INTERFACE_MAP() 接口映射表的使用方法: COM与类库 COleObjectFactory实现通用类厂 COleObjectFactory是一个通用的类厂 从CCmdTarget派生 并实现了IClassFactory2接口 定义内嵌的类厂对象: #def
您可能关注的文档
- 采购学2.ppt
- 醉翁亭记ppt教学课件.ppt
- 金字塔原理48pages.ppt
- 金字塔原理培训演示教材ppt.ppt
- 重庆铜锣湾生态旅游发展定位101PPT.ppt
- 金融学第八讲融资决策初步.ppt
- 金蝶KIS财务软件实.ppt
- 金融派生产品.ppt
- 针灸镇痛复件.ppt
- 路基路面工程第二章 行车荷载、环境、土.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 2020年北京中考英语试题及答案.pdf VIP
- 贷款结清证明.docx VIP
- 村两委换届模拟推演方案.docx VIP
- 有机化学——杂环化合物和生物碱.ppt VIP
- 2025年中考数学一模试卷(福建卷)含答案解析.pdf VIP
- 2025年菏泽职业学院单招语文测试试卷.docx VIP
- 三雄极光-商用照明项目专业产品手册(2023-2024).pdf VIP
- 杜邦dupont-FilmTec™Fortilife™ XC120 超高压反渗透膜元件-120bar.pdf
- 高处作业安全培训PPT课件.ppt VIP
- dwc_ble50combophy_tsmc40_databook数据手册解析.pdf VIP
原创力文档

文档评论(0)