我正在尝试使用 ATL 创建一个 COM 组件,并且我想为我的 VB 客户端引发事件。我发现了许多教程,所有这些教程的细节似乎都各不相同,而且似乎都没有生成一个可行的解决方案。这是我正在做的事情:
(使用 Visual Studio 2008):
- 创建一个新的 ATL DLL 项目。我已经调用它了
ATLEventTest
。 - 类视图:右键单击
ATLEventTest
,添加了一个新的 ATL 简单对象类。我称之为这个MyObject
,它产生了CMyObject
,,IMyObject
等等...... 该对象是通过以下方式创建的:a) 单元线程 b) 聚合 c) 双接口 d) ISupportErrorInfo e) 连接点
右键单击
CProxy_IMyObjectEvents<T>
,单击“添加功能”- 函数的返回类型为 void,命名为
someEvent
,并采用int testParam
. - 重建。
(此时,我应该能够在某处看到“实施连接点”。我没有……) - 右键单击
CMyObject
。'添加连接点' - 将“
_IMyObjectEvents
”移到列表中。 - 在我的解决方案中进行了代码搜索。到处都找不到
someEvent
! - 再次添加该
someEvent
功能。现在,它位于 ATLEventTest_i.h - 应该可以调用
fire_someEvent(...)
我的代码,但不能。
这一直让我发疯,试图让它发挥作用。如果有人能看到我做错了什么,我将不胜感激任何更正、提示、黑客等。
在这一点上,我很想说把向导搞砸了,直接尝试修改 c++ 和 idl,但我有一种感觉可能不会更好:(