cs_auwel
Messages postés4Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention 6 mars 2009
-
6 mars 2009 à 11:47
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
6 mars 2009 à 18:21
Voilà j'ai une dll (MFC partagée) qui contient une fonction permettant
l'affichage d'une boîte de dialogue. Cette fonction fonctionne
correctement si je l'appelle avec un projet MFC.
Cependant lorsque je l'appelle avec un projet non MFC, la boite de
dialogue ne s'affiche pas car HWND hWndParent retourné par la fonction
PreModal() me retourne NULL dans la fonction DoModal().
Quelqu'un pourrait m'aider?
Nb: toutes les autres fonctions fonctionnent du moment qu'il n'y a pas d'affichage à faire.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 mars 2009 à 12:14
C'est tout le contraire qu'il faut prévoir.
Un prog peut utiliser toutes les surcouches qu'il voudra (MFC ou plus exotique) mais une DLL doit toujours être indépendante.
cs_auwel
Messages postés4Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention 6 mars 2009 6 mars 2009 à 12:21
D'accord mais ma DLL doit utiliser les MFC pour accéder à certaines fonctions. Mais je veux ensuite pouvoir distribuer ma DLL afin qu'elle soit utiliser par des progs non MFC !!!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 mars 2009 à 12:31
NON et NON, une dll n'a pas à utiliser MFC ni rien d'autre que les fonctions API du système.
Tenir compte du fait qu'il faudra aussi un setup pour utiliser la dll, c'est une hérésie.
Tout ce qui se fait en MFC peut se faire en C sur API, pas l'inverse.
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 6 mars 2009 à 14:11
Bonjour
Il est bien sûr possible de faire une dll en MFC, j'en ai fait plein et je ne vois pas où est le problème. Il suffit de fournir MFC42.dll lors de la distribution de la dll.
Par contre, pour des appels depuis des applications non MFC le plus simple est de fournir une interface en C, c'est à dire d'exporter des fonctions C et pas des classes C++ (utilise extern "C"). J'ai ainsi écrit une dll en MFC qui s'utilise à partir de n'importe quel langage (C, C++, Visual Basic, Java, Delphi, et même Excel) avec 2 niveaux d'interfaçage (C et C++)
Pour ce qui est de l'affichage d'une dialogbox de la dll il faut que tu indiques à ton programme où aller prendre les ressources, c'est à dire dans la dll. La fonction AfxSetResourcehandle est là pour ça.
cs_auwel
Messages postés4Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention 6 mars 2009 6 mars 2009 à 14:49
Et pour plus d'information, j'ai exporter mes fonctions avec extern "C" et mes classes avec AFX_EXT_CLASS et je distribue ma DLL avec un setup qui installe les DLLs MFC nécessaire.
Par contre c'est vraiment l'affichage de mon dialogue qui me pose problème. Donc serait-il possible d'avoir un exemple simple d'affichage d'un boîte de dialogue par l'appel d'une fonction dans un projet MFC avec la méthode AfxSetResourcehandle?
Si c'est possible de me l'envoyer sur auwel@free.fr