0

我尝试用 COM 技术实现回调接口,并有这样的 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
    {
    };

我在这里做错了什么?

4

2 回答 2

2

我假设您的意思是使用 COM 连接点?这是MSDN 中ATL 连接点文档的链接。

如果您想弄清楚如何生成事件代理类,请查看第 4 点将连接点添加到对象中的第 4 点,这里是添加事件的MSDN 教程。您可以根据需要多次重新生成事件代理类。

我发现我总是不得不去寻找在哪里生成代理类......

于 2011-07-04T10:30:43.813 回答
0

最后,我找到了问题所在。

当您使用“实现连接点向导”时,您应该选择从“类型库”(而不是“IDL”)生成连接点。您在组合框中看到此选项,应更改默认选项 IDL -> Type Lib。

于 2011-07-11T17:57:14.233 回答