【发布时间】:2010-11-02 20:44:36
【问题描述】:
我正在尝试使用 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,但我有一种感觉可能不会好得多:(
【问题讨论】:
-
我个人鼓励您在没有 ATL 的情况下这样做。这是我为 ActiveX 控件和 JavaScript 写的一篇博客文章。接口和概念本质上是相同的。 jeffcode.blogspot.com/2008/02/…
标签: c++ events com atl connection-points