He estado siguiendo los 'tutoriales' de cómo exponer un .NET framework a través de COM (http://msdn.microsoft.com/en-us/library/zsfww439.aspx y http://msdn.microsoft.com/en-us/library/bd9cdfyx.aspx). Todo funciona, excepto la parte de eventos. Al agregar eventos a la interfaz de C# se genera el siguiente código de C++:Registro de controladores para el evento .NET COM en 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;
}
El problema es que no he encontrado ninguna información sobre cómo utilizar esto en C++. ¿Debo derivar de _MessageEventHandler
e implementar operator()
? ¿O algo completamente diferente?
(Tenga en cuenta que por el momento También estoy tratando el enfoque más documentada de utilizar IConnectionPointContainer y IConnectionPoint.)
Probablemente esperaba derivar de '_MessageEventHandler' y obtener una llamada en' IDispatch :: Invoke() 'para el evento, pero la pregunta es ¿con' DISPID'? –