用ATL实现第一个COM

1.       选择新建一个项目(ATL项目),应用程序设置里面选择属性化选项

2.       创建ATL对象(选择”ATL简单对象”)Foo

3.       添加Something方法(右键点击IFoo->添加方法)并实现之

4.       添加新接口:

首先在ATL对象类定义文件里面手动添加如下代码:

// IGoo

[

    object,

    uuid(" 9776625A -E7BE-4553-B4D2-9965AFD1B7E6"),

    dual,   helpstring("IGoo 接口"),

    pointer_default(unique)

]

__interface IGoo : IDispatch

{

   

    [id(1), helpstring("方法Banana")] HRESULT Banana(void);

};

    然后:右键点击ATL对象类,添加新接口,并添加相关方法.

 

5.     添加多个COM对象(CBar)和添加第一个对象一样

6.     添加ATL调试支持:

#define _ATL_ALL_WARNINGS       //统计QueryInterface调用,需在<atlcom.h>前定义

#define _ATL_DEBUG_INTERFACES   //统计AddRefRelease调用,需在<atlbase.h>前定义

7.     ATL build设置

Win32 Debug         定义 _DEBUG

Win32 Release       NDEBUG,_ATL_STATIC_REGISTRY

 

 

 

 

 

 

 

客户端:

1.       引入类型库  注意:tlb文件名有前置的下划线”_”

#import "../FisrtATL/_FisrtATL.tlb" no_namespace named_guids

2.     初始化COM  

CoInitialize(NULL);

3.     注意:

COM对象的第一个接口是的GUIDCLSID_Cxx,后续接口的GUIDIID_Ixx;

 

注意事项:

1.     对于带属性的ATL COM组件,tlb文件名有前置的下划线,且在Debug文件夹外面

而对于不带不行的ATL COM组件,tlb文件名前面没有前置的下划线,且在Debug文件里面

2.     对于带属性的ATL COM,GUID会有前导的C,CLSID_Cxx,

而对于不带属性的ATL COM,GUID不带前导的C, CLSID_xx;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值