Bonjour,
J'ai un composant qui utilise une classe importée. L'interface de la classe était de type COM.
Le classe en question génère des évènements. Mon composant doit les récupérer, mettre en forme les messages et renvoyer le tout dans un autre évènement.
Seulement, j'ai un gros problème que je ne sais pas résoudre.
La classe est écrite en C# et l'évènement est un delegate.
J'ai créé une fonction intermédiaire pour pouvoir utiliser ce delegate mais je doit envoyer une information pour que la classe puisse appeler ma fonction.
Voici un exemple d'appel que j'ai dans C++Builder :
Et voici comment ma fonction est implanté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ClasseExterne->OnActioncallbackWrapper((long)&BackFromActioncallbackWrapper);
Et dans l'entête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void TMonComp::BackFromActioncallbackWrapper(IAsyncResult* asyncResult_in) VARIANT value; asyncResult_in->get_AsyncState(&value); if (FOnAction) { (FOnAction)(this, VarToStr(value)); }
Le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part static void BackFromAtioncallbackWrapper(IAsyncResult* asyncResult_in);
- Si je laisse la foncion en static, elle n'a plus accès au pointeur this et je ne peut pas remonter l'information dans l'évènement.
- Si j'enlève le mot static, j'ai l'erreur suivante :
[BCC32 Erreur] TMonComp.cpp(85): E2031 Impossible de transtyper de 'void (* (_closure )(IAsyncResult *))(IAsyncResult *)' en 'long'
Quelqu'un à une idée lumineuse ?
Merci
Partager