Ich habe die 'Tutorials' zum Bereitstellen eines .NET-Framework über COM (http://msdn.microsoft.com/en-us/library/zsfww439.aspx und http://msdn.microsoft.com/en-us/library/bd9cdfyx.aspx) folgen. Alles funktioniert bis auf den Eventteil. Wenn ich Ereignisse an dem C# Schnittstelle den folgenden C++ Code hinzufügen, wird generiert:Registrieren von Handlern für .NET COM-Ereignis in 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;
}
Das Problem ist, dass ich keine Informationen über gefunden habe, wie dies ++ in C zu verwenden. Muss ich von _MessageEventHandler
ableiten und operator()
implementieren? Oder etwas ganz anderes?
(Beachten Sie, dass für den Moment, wo ich auch bin versucht, die mehr dokumentierter Ansatz von IConnectionPointContainer und IConnectionPoint verwenden.)
Wahrscheinlich haben Sie erwartet, dass Sie von '_MessageEventHandler' ableiten und einen Aufruf von' IDispatch :: Invoke() 'für das Ereignis erhalten - aber die Frage ist, was' DISPID'? –