我确实用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++