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 //统计AddRef和Release调用,需在<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对象的第一个接口是的GUID是CLSID_Cxx,后续接口的GUID是IID_Ixx;
注意事项:
1. 对于带属性的ATL COM组件,tlb文件名有前置的下划线,且在Debug文件夹外面
而对于不带不行的ATL COM组件,tlb文件名前面没有前置的下划线,且在Debug文件里面
2. 对于带属性的ATL COM,其GUID会有前导的C,如 CLSID_Cxx,
而对于不带属性的ATL COM,其GUID不带前导的C,入 CLSID_xx;