Dialog MFC d'une DLL dans une application non MFC

cs_auwel Messages postés 4 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 6 mars 2009 - 6 mars 2009 à 11:47
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.


merci

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, MVP VC++
0
cs_auwel Messages postés 4 Date d'inscription jeudi 24 mai 2007 Statut Membre Derniè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 !!!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, MVP VC++
0
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
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.

Regarde ici : http://cpp.developpez.com/faq/vc/?page=DLL
ed73
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_auwel Messages postés 4 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 6 mars 2009
6 mars 2009 à 14:22
Merci pour cette info. Aurais-tu un exemple concret à m'envoyer ?
En te remerciant
0
cs_auwel Messages postés 4 Date d'inscription jeudi 24 mai 2007 Statut Membre Derniè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

Merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 mars 2009 à 18:21
"Il suffit de fournir MFC42.dll ..."
encore faut-il compiler avec un VC++ du siècle dernier.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous