我有一个VC ++ 6中的ATL / COM项目。我想要一个以前没有定义过的现有类来引发事件和引发事件。为此,该类将必须实现“连接点”。

这些事件的类型是以前从未有过的,所以我将不得不创建一个新的连接点,而不是重用现有的连接点。

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

我知道如何创建一个新的连接点,只要它与一个新的ATL类相关联即可实现-创建类时请检查“支持连接点”。

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

我修改了IDL,使其包含与现有连接点的定义类似的内容:

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


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

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

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

我想念什么?

谢谢。

最佳答案

您是否添加了此基类?

  public IConnectionPointContainerImpl<CYOUR_CLASS_HERE>


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

确保使用相同的名称。然后,将其与原始项目进行比较以了解缺少的内容。

关于visual-c++ - 在VC++ 6中创建新的连接点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1161183/

10-14 16:45