Bonjour,
Je suis en train de porter une petite appli qui est développée de façon native en C++ avec l'api Win32 sous QT.
Or dans ma fenêtre il y a des ActiveX :-(
J'ai trouvé comment les intégrer graphiquement avec QtDesigner, mais j'ai un soucis :
J'ai un objet COM qui permet se connecter avec une webwam un peu complexe, et c'est seulement un fois la connexion établie que les ActiveX affichent des infos.
Sauf que je comprends pas comment utiliser les objets COM, par exemple, que fait CoCreateInstance, et que fait QueryInterface? Dans quel cas on doit les utiliser?
Est-ce que en intégrant mon objet COM à Qt via de QAxObject, je dois utiliser CoCreateInstance? (il me semble que c'est Qt qui le gère en arrière plan)
Quand j'utilise un dynamicCall sur mon QAxObject, j'obtiens : QAxBase::dynamicCallHelper: Object does not support automation
Pourtant je suis sur que les constructeur a bien réussi... D'où la question : tous les objets COM sont ils fait pour être appelés dynamiquement?
Niveau ressource, j'ai la dll, et un fichier TLH. J'ai aussi un fichier stdafx.h qui fait tout planter quand je l'inclus à la manière du projet win32 (redéfinitions de symboles dans mon fichier TLH, mais je comprends pas pourquoi).
Enfin, est-ce que j'ai besoin d'inclure ATL pour faire fonctionner tout ça, ou bien ActiveQt gère ça lui même?
C'est surtout queryInterface que je n'arrive pas à me faire fonctionner, et qui me met toujours un pointeur null dans ma "classe Interface"
Je n'ai pas le code ici, mais ce que j'ai fait jusque là ressemble à :
#include <QAxObject>
#include "fichier.tlh"
QAxObject *tetClient;
ITetClient *interface;
tetClient = new QAxObject("TetClient Object");
HRESULT hr = tetClient.queryInterface( ?????? , &interface);
A la place des points d'interrogation, j'ai utilisé IID_TetClient, QUuid(Qstring(.....)), CSID_Tet...
Et systématiquement, interface est un pointeur null -_-