VC++如何调用COM组件

HH2012yls 2012-09-07 10:44:00
在网上搜索到这个帖子,如何从VC++调用COM组件,有些问题不太明白。

1.创建myCom.dll,该COM只有一个组件,两个接口:

IGetRes--方法Hello(),
IGetResEx--方法HelloEx()



2.在工程中导入组件或类型库

#import "组件所在目录myCom.dll" no_namespace

#import "类型库所在目录myCom.tlb"
using namespace MYCOM;

方法一:

CoInitialize(NULL);
CLSID clsid;
CLSIDFromProgID(OLESTR("myCom.GetRes"),&clsid);
CComPtr pGetRes;//智能指针
pGetRes.CoCreateInstance(clsid);
pGetRes->Hello();
pGetRes.Release();//小心哦!!请看最后的“注意”
CoUninitialize();

问题:
1.myCom.GetRes 是否指获取该组件的接口GetRes ?
2.CComPtr pGetRes;//智能指针。此处应该有误吧,正确的应该这样写:CComPtr<GetRes> pGetRes;因为CComPtr是一个模版,应该用一个类型进行实例化。
3.该组件应该提供一个接口声明的头文件吧?不然在此CComPtr<GetRes> pGetRes声明一个接口的指针时,该类型无法识别啊?编译不通过啊?

请高手指点!
...全文
201 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2012-09-07
  • 打赏
  • 举报
回复
1.接口的名称,通过它来获得接口的CLSID,为后面获取接口对象准备
CComPtr<GetRes> pGetRes
#import的方式会自动帮你生成接口的定义文件

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧