如何在超类中设置 CComPtr 上的接口?
我想尝试修改我的代码以使用超类来处理创建 CComPtr,但我不确定如何将类传递给 CComPtr 来创建,即中的部分
void CSuperClass::CreateSmartPointer(CString class, Interface interface)
{
CLSID clsid;
hr = CLSIDFromProgID(class, &clsid);
CComPtr<interface> spInterface;
hr = spInterface.CoCreateInstance(clsid, 0, CLSCTX_ALL);
}
void CSubClass::Init()
{
CreateSmartPointer("MYServer.MyClass", xxx);
}
void CSubClass2::Init()
{
CreateSmartPointer("MYServer2.MyClass2", xxx);
}
I want to try and modify my code to use a superclass to handle creating CComPtr, but I'm not sure how to pass the class to the CComPtr to create, ie the part in
void CSuperClass::CreateSmartPointer(CString class, Interface interface)
{
CLSID clsid;
hr = CLSIDFromProgID(class, &clsid);
CComPtr<interface> spInterface;
hr = spInterface.CoCreateInstance(clsid, 0, CLSCTX_ALL);
}
void CSubClass::Init()
{
CreateSmartPointer("MYServer.MyClass", xxx);
}
void CSubClass2::Init()
{
CreateSmartPointer("MYServer2.MyClass2", xxx);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据您想要实现的目标,模板可以完成这项工作:
Depending on what you want to achieve, templates can do the job:
我认为您可以使用 IIDFromString 函数来获取接口 Id,然后对其执行 QueryInterface 。在
IUnknown
上创建 COM 对象,然后对新解析的IID
执行QueryInterface
。I think you can use
IIDFromString
function to get an Interface Id and then do aQueryInterface
on that. Create the COM Object onIUnknown
and then do aQueryInterface
on your newly-resolvedIID
.