【发布时间】:2014-07-02 04:15:58
【问题描述】:
我是一名 COM 初学者,并尝试通过 COM 在我的 c++ 项目中使用托管库。我可以为双接口创建实例并调用方法……它工作正常……
我想知道如何构造可以接收来自任何dispinterface COM对象的事件的客户端接口?
#include "stdafx.h"
#import "../COMLib/bin/Debug/COMLib.tlb" named_guids
#include <comutil.h>
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
COMLib::ICalcPtr pCalc;
HRESULT hRes = pCalc.CreateInstance(__uuidof(COMLib::Calc));
if(FAILED(hRes))
printf("ICalcPtr::CreateInstance failed w/err 0x%08lx\n", hRes);
else
{
printf("%d\n", pCalc->Factorial(10));
}
CoUninitialize();
return 0;
}
我知道如何为上面的双接口创建实例。但我需要帮助来实例化事件的调度接口。非常感谢您的帮助。
【问题讨论】:
-
“工作正常” - 那么是的问题是什么?
-
为双接口工作。不知道如何为调度接口创建实例。我必须从调度接口接收事件。
-
理解 COM 的诀窍是要清楚你不创建接口的实例。您创建一个 CoClass 的实例,然后为您需要/ CoClass 实现的任何内容创建 QueryInterface。您不是在创建分派接口的实例。您正在访问已创建的某事物实例的调度接口。