【问题标题】:Create a new connection point in VC++ 6?在 VC++ 6 中创建一个新的连接点?
【发布时间】:2010-11-12 18:27:21
【问题描述】:

我有一个 ATL/COM 项目,在 VC++ 6 中。我想要一个现有的类,它以前从未被定义为引发事件,引发事件。为此,该类必须实现一个“连接点”。

这些事件属于以前没有任何类引发过的类型,因此我将不得不创建一个新的连接点,而不是重用现有的连接点。

我知道如何让一个类实现一个连接点 - 在类视图中右键单击该类,选择“实现连接点”,然后从它显示的列表中选择适当的连接点。

我知道如何创建一个新的连接点,只要它与一个新的 ATL 类相关联来实现它 - 在创建类时选中“支持连接点”。

但我不知道如何创建一个新的连接点创建一个新的 ATL 类来实现它。

我已修改 IDL 以包含类似于现有连接点定义的内容:

[
    uuid(*blah blah blah*),
    helpstring("_IBlahEvents Interface")
]
dispinterface _IBlahEvents
{
    properties:
    methods:
    [id(1), helpstring("method BlahChanged")] HRESULT BlahChanged();
};

(显然我有一个真正的 uuid,而不是“blah blah blah”)。

完成此操作后,_IBlahEvents 界面会显示在类视图中。但是当我右键单击要实现_IBlahEvents的ATL类,并选择“实现连接点”时,_IBlahEvents并没有出现在现有连接点列表中。

我已经重新编译,包括清理和重建所有。

我错过了什么?

谢谢。

【问题讨论】:

    标签: visual-c++ com atl connection-points


    【解决方案1】:

    你有添加这个基类吗?

      public IConnectionPointContainerImpl<CYOUR_CLASS_HERE>
    

    如果不是这样,请从头开始创建一个与该项目匹配的新项目,但选中“支持连接点”复选框。

    确保使用相同的名称。然后,将其与原始项目进行比较,看看缺少什么。

    【讨论】:

      【解决方案2】:

      如果您手动修改了 IDL 文件 - 那么您也应该手动执行此步骤。 也就是说 - 在 coclass 中添加以下内容:

      [default, source] dispinterface _IBlahEvents; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        相关资源
        最近更新 更多