CoCreateInstance形参与实参类形不同

cmpfish 2011-01-04 10:43:28
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
IXMPaintControl *pControl;

if(CoInitialize(NULL)!=S_OK)
return 0;

hr=CoCreateInstance(//&IID_IXMPaintControl
CLSID_XMPShowControl
,NULL
,CLSCTX_INPROC_SERVER
,IID_IXMPaintControl
,(void **)&pControl);
if(SUCCEEDED(hr)){
//pControl->Open(NULL,0,0,1);
//pControl->Close(0);
}
CoUninitialize();
return 0;
}
但在另外一个项目中,
hr=CoCreateInstance(
CLSID_XMPShowControl
,NULL
,CLSCTX_INPROC_SERVER
,IID_IXMPaintControl
,(void **)&pControl);
没有任何问题。
不知道这是为什么,项目的设置,看上去是一样的?
...全文
45 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
feile922 2011-01-05
  • 打赏
  • 举报
回复
不清楚问题
cmpfish 2011-01-05
  • 打赏
  • 举报
回复
在包含预编译头的项目中,IID_IXMPaintControl是正确的,组件方法可以正确调用。但不明白预编译头开关与CoCreateInstance()是否存在某种内在的联系?
cmpfish 2011-01-05
  • 打赏
  • 举报
回复
换成这样的形式时&IID_IXMPaintControl,COM组件的接口方法不起作用。也就意味着,CoCreateInstance()函数不起正确的作用。
cmpfish 2011-01-05
  • 打赏
  • 举报
回复
主要是CoCreateInstance(),中关于COM的GUID类型,在编译时,出现,"const CLSID无法转为const IID *const".
gw_net 2011-01-04
  • 打赏
  • 举报
回复
没明白你问什么?
oyljerry 2011-01-04
  • 打赏
  • 举报
回复
类型不同,需要的时候可以自己强制转换..
wshcdr 2011-01-04
  • 打赏
  • 举报
回复
什么情况?

3,245

社区成员

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

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