通过ATL开发COM概述

330 篇文章 4 订阅 ¥19.90 ¥99.00
本文档介绍了如何利用ATL(Active Template Library)来开发COM组件。具体展示了CAtlMath类的实现,该类继承自CComObjectRootEx、CComCoClass以及IDispatchImpl,用于实现IAtlMath接口。
摘要由CSDN通过智能技术生成
ATL 是为了减轻程序员开发COM的负担而提供的一套模板库
ATL提供的支持:
1. CComModule封装对组件的宿主支持,掩盖了(DLL和EXE)之间的差别。
2. 对IUnknown的支持
3. 对类工厂的支持
4. 自动化 : IDispatchImpl
COM 数据类型 : CComBSTR, CComVariant
接口指针 : CComPtr, CComQIPtr
错误处理 :ISupportErrorInfoImpl, CComObject
连接点 : IConnectionPointContainerImpl, IConnectionPointImpl :支持服务器的回叫信号(callback)或事件(event)
异步属性下载 : CBindStatusCallback
自注册 :
视窗和对话框 : Cwindow, CwindowImpl, CDialogImpl, CmessageMap


每个COM组件需要实现这三个功能
1. 实现IUnknown接口 (通过 CComObjectRootEx 实现)
2. 实现一个类工厂,支持组件的创建 (通过 CComCoClass 实现)
3. 实现自注册

一个典型ATL COM组件的定义
  1. class ATL_NO_VTABLE CAtlMath :  
  2.     public CComObjectRootEx<CComSingleThreadModel>,  
  3.     public CComCoClass<CAtlMath, &CLSID_AtlMath>,  
  4.     public IDispatchImpl<IAtlMath, &IID_IAtlMath, &LIBID_ATL_ServerLib, /*wMajor =*/ 1, /*wMinor =*/ 0>  
  5. {//......  
  6. }  
 
CComObjectRootEx 提供 IUnknown支持
CComCoClass 提供类工厂的支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值