-
DLL et activeX
Bonjour,
J'ai 2 classes très semblables qui me permettent de gérer un péripjérique branché sur port série.
La première, que j'utilisais jusqu'à aujourd'hui, est issue d'un controle ActiveX : je la génére grace à classWizard ; celle-ci hérite de CWnd :
class CInterfaceModule : public CWnd
La deuxième provient d'une DLL et hérite de COleDispatchDriver :
class IInterfaceModule : public COleDispatchDriver
Les 2 classes ont des signatures identiques.
Hors, dés la première acquisition, tout plante.
Mais, les fonctions d'acquisition des 2 classes sont toutes 2 identiques :
VARIANT result;
InvokeHelper(0xb, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
return result;
Si je tente de passer directement par la DLL, c'est que j'en ai besoin pour une autre classe dont je ne peux pas générer de version "CWnd".
Peut-etre y a t'il un moyen particulier de gérer les COleDispatchDrivers ?
Merci d'avance de votre aide,
Yéyé
-
Bon, il y a un peu de mieux :
après la création de mon IInterfaceModule myIM, j'utilise
Code:
myIM.CreateDispatch("FSA.InterfaceModule");
et çà marche.
Je teste donc sur mon autre classe (celle qui ne peut pas etre créée en "version CWnd").
L'utilisation de CreateDisplatch semble fonctionner car la valeur m_lpDispatch (de COleDispatchDriver) est modifiée.
Mais, alors que tous les parametres sont identiques, il n'arrive pas à se connecter au périphérique et m'envoies un message d'erreur ("impossible de trouver le périphérique, vérifiez qu'il est bien connecté").
... et non : le port série n'est pas bloqué ;)
Ca devient plus pointu, mais si quelqu'un a une idée ...
-
c'est bon : c'etait la bonne solution mais j'avais un objet serialPort qui n'avait pas un BaudRate correct, donc forcément çà marche moins bien.
Résolu :)