学习COM心得!

由于公司对软件开发都采用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文件中声明一下就可以了!!如此简单!!!!!

比如:


 

 欢迎大家来评论哈!!!^ - ^

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值