DLL d'extension MFC : inconsistance de CWnd [MFC] - C++ - Programmation
Marsh Posté le 30-01-2007 à 07:27:06
essaie d'isoler la récupération de pWnd en dehors de la zone définie par AFX_MANAGE_STATE :
Code :
|
Marsh Posté le 31-01-2007 à 13:50:09
Hum. J'avais fait des essais mais j'avais un problème soit avec la récupération du CWnd* soit avec la création de la barre d'outils (code non présenté dans l'extrait de code)
Je vais continuer à creuser dans ce sens.
Marsh Posté le 26-01-2007 à 22:43:35
J'ai un problème avec une DLL d'extension MFC (celle disposant d'un objet CWinApp propre et pour laquelle ont doit insérer une instruction AFX_MANAGE_STATE(AfxGetStaticModuleState()) au début de chaque méthode)
Ma DLL admet un point d'entrée de type:
L'idée principale était de créer un plugin sous forme de DLL. Ce pluggin doit gérer une barre d'outils propre à la DLL, l'intégrer dans la fenêtre passée en argument de InitTheDLL() et gérer les commandes de la barre d'outils via l'objet CWinApp de la DLL. Problème : si je retire l'instruction AFX_MANAGE_STATE, je récupère des pointeurs CWnd valides mais je ne peux charger ma barre d'outils car le module de ressource chargé n'est pas celui de la DLL mais de l'application ayant appelé la DLL. Si je garde AFX_MANAGE_STATE, les pointeurs CWnd sont incohérents mais la création de la barre d'outils réussi!
J'ai fait une tentative avec une DLL standard utilisant les MFC (Juste la DllMain et les instructions de chargement des MFC). Ca marche mais je suis bien embêté pour intercepter les options de la barre d'outils! Pour l'instant, je me suis résigné à gérer une communication en deux temps. L'application à étendre via le pluggin gère les messages de la barre d'outils grace à une plage de commandes (ID_xxx) réservées.
Note: dans les deux cas, la DLL est chargée avec ::LoadLibrary. Les fonctions sont appelées grâce à GetProcAdress et un prototype de fonction.
Je voudrais bien faire marcher le premier modèle pour que la DLL gère elle même son comportement et réduire le couplage lié à cette architecture.
Message édité par slash33 le 26-01-2007 à 22:54:26