在C++中注册.NET COM事件的处理程序

Ran*_*oet 5 c# c++ com interop

我一直在关注如何通过COM公开.NET框架的'教程'(http://msdn.microsoft.com/en-us/library/zsfww439.aspxhttp://msdn.microsoft.com/ en-us/library/bd9cdfyx.aspx).除了活动部分,一切都有效.当我向C#接口添加事件时,会生成以下C++代码:

struct __declspec(uuid("..."))
_MessageEventHandler : IDispatch
{};

struct __declspec(uuid("..."))
IConnection : IDispatch
{
  virtual HRESULT __stdcall add_MessageEvent (
    /*[in]*/ struct _MessageEventHandler * value ) = 0;
  virtual HRESULT __stdcall remove_MessageEvent (
    /*[in]*/ struct _MessageEventHandler * value ) = 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是我没有找到任何关于如何在C++中使用它的信息.我需要从派生_MessageEventHandler和实施operator()?或完全不同的东西?

(请注意,目前我还在尝试使用IConnectionPointContainer和IConnectionPoint的更多文档化方法.)

Rob*_*vić 2

我已经很久没有使用COM了,当时我使用的是Visual C++ 6.0。我记得为 COM 连接点实现接收器并不是一个简单的过程。有多种方法可以实现它们,具体取决于您使用的是 MFC 还是 ATL。也许现在有更简单的方法。以下是一些可以帮助您的链接:

代码项目 - 从非托管 C++ 中的托管代码接收事件
代码项目 - COM - 有关 COM 的大量文章
代码项目 - 在控制台应用程序中处理 COM 事件
代码项目 - 在控制台应用程序中处理 COM 事件,第二部分