由于公司对软件开发都采用COM软件模型,所以,这次又用到了COM,一直以来对COM总是模模糊糊,不是太明白,这次的使用对COM又加深了印象,同时在公司高手指点下,获益良多,和大家一起分享。
分享主要以下几点:
1.如何使用别人的COM组件
2.如何用智能指针来使用接口(CComQIPtr , CComPtr)
3.如何在COM接口函数中使用自定义类型数据(比如结构体)
1.对于第一点。 我主要用#import指令来导入组件所在DLL,比如这样:
#import "F:/jasonM_Project/NatTypeTest/NatTypeTest/Release/NatTypeTest.dll"
这样之后,编译一次,你会发现,COM通过类型库,给你生成了XXXX.TLI XXXX.TLH, .tlh文件就是头文件,然后你可以把代码中的#import指令注释或者删除掉,包含生成的tlh文件,你会发现tlh文件就是一些自定义数据结构的声明和CLSID ,IID ,的声明。
2.使用CComQIPtr
这个和CComPtr的主要区别至于,CComPtr能在模板参数里面用IUnknown 接口指针,而CComQIPtr 不能。
这是一段智能指针使用COM的实例代码:
HRESULT hr;
CComQIPtr<INatType> spNatType;
hr = spNatType.CoCreateInstance(__uuidof(NatType));
hr = spNatType->CheckNatType(&serverAddr, &lPreservePort, &lHairbin, nPort, &sAddr, &enType);
看了上述代码之后,是否明白了许多呢??
3.使用自定义数据类型。
在以前,看了CodeProject上面很多关于在COM中使用自定义的数据类型的文章,搞了很久仍旧不是太会,来公司经高人指点,原来这么简单
在写组件的时候,只需要把接口函数里面使用到得自定义数据类型在idl文件中声明一下就可以了!!如此简单!!!!!
比如:
欢迎大家来评论哈!!!^ - ^