J'ai suivi les «tutoriels» sur la façon d'exposer un framework .NET via COM (http://msdn.microsoft.com/en-us/library/zsfww439.aspx et http://msdn.microsoft.com/en-us/library/bd9cdfyx.aspx). Tout fonctionne sauf pour la partie événements. Quand j'ajouter des événements à l'interface C# code C++ suivant est généré:Enregistrement de gestionnaires pour l'événement COM .NET 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;
}
Le problème est que je ne l'ai pas trouvé d'informations sur la façon d'utiliser en C++. Dois-je dériver de _MessageEventHandler
et implémenter operator()
? Ou quelque chose d'autre entièrement?
(Notez que pour le moment je suis aussi essayer l'approche plus documentée de l'utilisation IConnectionPointContainer et IConnectionPoint.)
Vous pensiez probablement dériver de '_MessageEventHandler' et recevoir un appel sur' IDispatch :: Invoke() 'pour l'événement - mais la question est avec quel' DISPID'? –