我在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不会显示在现有连接点列表中。
我已经重新编译,包括清理和重建所有内容。
我错过了什么?
感谢。
答案 0 :(得分:0)
您是否添加了此基类?
public IConnectionPointContainerImpl<CYOUR_CLASS_HERE>
如果不是这样,请从头开始创建一个与此项目匹配的新项目,但选中“支持连接点”复选框。
确保使用相同的名称。然后,对原始项目进行区分,看看缺少什么。
答案 1 :(得分:0)
如果您手动修改了IDL文件 - 那么您也应该手动执行此步骤。 那就是 - 在coclass中添加以下内容:
[default, source] dispinterface _IBlahEvents;