Podążałem za "samouczkami" jak ujawnić framework .NET przez COM (http://msdn.microsoft.com/en-us/library/zsfww439.aspx i http://msdn.microsoft.com/en-us/library/bd9cdfyx.aspx). Wszystko działa z wyjątkiem części wydarzeń. Kiedy dodać zdarzeń do interfejsu C# następujący kod C++ jest generowany:Rejestrowanie procedur obsługi zdarzeń .NET COM w języku 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;
}
Problemem jest to, że nie znalazłem żadnej informacji o tym, jak korzystać z tego w C++. Czy muszę wyprowadzić z _MessageEventHandler
i wdrożyć operator()
? Lub coś zupełnie innego?
(Zauważ, że w tej chwili jestem również staramy się bardziej udokumentowane podejście korzystania IConnectionPointContainer i IConnectionPoint.)
Prawdopodobnie spodziewałbyś się wyprowadzić z '_MessageEventHandler' i odebrać wywołanie' IDispatch :: Invoke() 'dla zdarzenia - ale pytanie brzmi, co to jest" DISPID "? –