3 c++ com events atl connection-points
我正在尝试使用ATL创建一个COM组件,我想为我的VB客户端引发事件.我发现了很多教程,所有这些教程的细节都各不相同,但它们似乎都没有产生可行的解决方案.这是我在做的事情:
(使用Visual Studio 2008):
ATLEventTest.ATLEventTest,添加了一个新的ATL简单对象类.我叫这个MyObject,它产生的CMyObject,IMyObject等...该对象创建于:a)公寓线程b)聚合c)双界面d)ISupportErrorInfo e)连接点
右键单击CProxy_IMyObjectEvents<T>,单击"添加功能"
someEvent,并采用int testParam.CMyObject.'添加连接点'_IMyObjectEvents"在进入名单.someEvent任何地方!someEvent再次添加了该功能.现在,它可以在ATLEventTest_i.h中找到fire_someEvent(...)在我的代码中调用,但不能.这让我疯狂,试图让它发挥作用.如果有人能看到我做错了什么,我会感谢任何更正,提示,黑客等.
在这一点上,我很想说要搞砸巫师,并试着直接修改c ++和idl,但我有一种可能不太好的感觉:(
尝试使用此位置概述的方法:
使用上面给出的示例名称,在MyObject.idl文件中,即使在dispinterface _IMyObjectEvents部分下也应该看到出站声明.由于您右键单击CProxy_IMyObjectEvents <T>而不是库下的_IMyObjectEvents,因此您的IDL可能缺少定义.自动生成的文件_IMyObjectEvents_CP.h文件应存在于项目头文件中,并且应该包含Fire_someEvent()方法,以便正确添加方法.如果没有,您可能会发现它只是创建了一个名为someEvent()的方法.
以下是您可以在测试项目中尝试的大纲.