如何在非托管C ++ / ATL中实现C#接口事件

时间:2013-06-24 12:10:45

标签: c# c++ events com atl

我确实用C#定义了一个接口:

[ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("02F91299-B87C-47D2-B501-7768E767E012")]
public interface IFoo
{
    event FooEventHandler FooEvent;
}

[ComVisible(true), Guid("2CB3858D-5729-47A1-B46B-C2C37C522E10")]
public delegate void FooEventHandler(IFoo sender, int status);

我必须在非托管C ++ ATL DLL中实现此接口。代码类向导建议:

STDMETHOD(add_FooEvent)(_FooEventHandler * value);
STDMETHOD(remove_FooEvent)(_FooEventHandler * value);

我将FooEventHandler视为IDispatch对象。 我确实将这些_FooEventHandler *值添加/删除到列表中。

现在我的问题是:如何为所有存储的_FooEventHandlers触发/调用此事件?

谢谢, Cabbi

更新 我在这里找到了答案:Exposing manged events to COM using C++

0 个答案:

没有答案