在VC ++ 6中创建一个新的连接点?

时间:2009-07-21 19:19:01

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

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

这些事件是以前没有类引发过的类型,所以我必须创建一个新的连接点,而不是重用现有的连接点。

我知道如何使类实现连接点 - 右键单击​​Class View中的类,选择“实现连接点”,然后从显示的列表中选择适当的连接点。

我知道如何创建一个新的连接点,只要它与一个新的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 blah ”)。

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

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

我错过了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

您是否添加了此基类?

  public IConnectionPointContainerImpl<CYOUR_CLASS_HERE>

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

确保使用相同的名称。然后,对原始项目进行区分,看看缺少什么。

答案 1 :(得分:0)

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

[default, source] dispinterface _IBlahEvents;