我尝试使用COM techonlogy实现回调接口,并使用IDL:
library LogstreamScannerLib
{
importlib("stdole2.tlb");
[
uuid(8CACF064-EF0E-4496-92D5-F26C64A5858A)
]
dispinterface _IMyClassEvents
{
properties:
methods:
[id(1)] void SomeMethod([in] int data);
};
[
uuid(AFC03FCD-01A9-4F38-994F-BA98E57FF64E)
]
coclass MyComClass
{
[default] interface IMyClass;
[default, source] dispinterface _IMyClassEvents;
};
};
请注意,IMyClass有SomeMethod声明,但我无法弄清楚为什么当我重新编译/重建项目时它出现在我的自动生成的类中。
它总是被声明为空:
MIDL_INTERFACE("8CACF064-EF0E-4496-92D5-F26C64A5858A")
_IMyClassEvents : public IDispatch
{
};
我在这里做错了什么?
答案 0 :(得分:2)
我认为您的意思是使用COM连接点?以下是MSDN中ATL Connection Points文档的链接。
如果您正在尝试弄清楚如何生成事件代理类,请查看Adding Connection Points to an Object中的第4点,此处是MSDN tutorial,用于添加事件。您可以根据需要多次重新生成事件代理类。
我发现我总是要去寻找生成代理类的地方......
答案 1 :(得分:0)
最后,我发现了这个问题。
使用“实施连接点向导”时,应选择从“类型库”(而不是“IDL”)生成连接点。您在组合框中看到此选项,并应更改默认选项IDL - >输入Lib。