如何实现QueryInterface,求最简单的Api实现例子(不用MFC)。 rt,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类似于HRESULT CA::QueryInterface(const IID& iid,void** ppv) { if(iid==IID_IUnknown) { *ppv=static_cast<IX*>(this); } else if(iid==IID_IX) { *ppv=static_cast<IX*>(this); } else if(iid==IID_IY) { *ppv=static_cast<IY*>(this); } else { *ppv=NULL; return E_NOINTERFACE; } static_cast<IUnknown*>(*ppv)->AddRef(); return S_OK; } ls的:QueryInterface是总是要返回this吗? 还是说,可以返回别的一个什么东西,但是要保证所有return的都是一个指针?那如果是这样的话,直接一句return this不就行了,干嘛还要switch/case呢,好像不必要啊。hehe 同问,是必须都要返回this吗? 这样的话switch/case确实觉得多余,一个return this就行了。谢谢 不一定,也可能返回成员的this。看你咋实现的对象。 请教各位大侠:NSIS生成的安装包如何去除开始菜单中卸载程序的快捷方式? 如何正确设置按钮的图标? 两个程序在同一个机器上运行,使同一个端口号可以吗 SetWindowPos会使按钮获得焦点的问题 控件旋转问题: MFC中什么消息是响应对话框中 UpdateData(0)函数的. 为什么程序显示缺少MFC42D.dll,大侠,快来救救我阿,感激不尽 发现ATL的好。。。(有分) 超越极限:程序如何抢在explorer.exe被加载之前启动,接管整个windows系统?(续前) COM与动态链接库 关于界面 关于创建线程内核对象计数(感觉释放资源很重要的)
HRESULT CA::QueryInterface(const IID& iid,void** ppv)
{
if(iid==IID_IUnknown)
{
*ppv=static_cast<IX*>(this);
}
else if(iid==IID_IX)
{
*ppv=static_cast<IX*>(this);
}
else if(iid==IID_IY)
{
*ppv=static_cast<IY*>(this);
}
else
{
*ppv=NULL;
return E_NOINTERFACE;
}
static_cast<IUnknown*>(*ppv)->AddRef();
return S_OK;
}