2010-07-15 5 views
0

Lors de la création d'un projet DLL MFC dans VC++ 2005, vous obtenez un écran "paramètres d'application" avec un choix de DLL régulière avec MFC statique/dynamique ou une DLL d'extension MFC .Création d'une boîte de dialogue MFC partagée: DLL régulière ou DLL d'extension MFC

Nous voulons une DLL qui contient quelques boîtes de dialogue communes, afin que nous puissions les utiliser dans d'autres projets par exemple:

CGetNameDlg *dlg = new CGetNameDlg(); 
dlg->doModal(); 
string name = dlg->getName(); 
delete dlg; 

Nous ne sommes pas sûr que cela nécessite une DLL d'extension ... si ceux-ci sont spécifiquement pour ajouter de nouveaux contrôles pour améliorer MFC lui-même, ou si nous faisons simplement un projet DLL régulier reliant à MFC dynamiquement, comme nous le ferions s'il s'agissait d'un projet EXE.

+0

Cela peut être utile à ceux qui ont encore des questions sur la sélection de DLL d'extension MFC: http://stackoverflow.com/a/3313624/908336 –

Répondre

1

Personnellement, je créerais une DLL régulière. Je trouve qu'une DLL régulière donne une séparation de code beaucoup plus grande qu'une DLL d'extension, avec la complexité supplémentaire d'avoir l'utilisation de la macro AFX_MANAGE_STATE() au point d'entrée de chaque appel dans la DLL. Si vous concevez correctement votre code (par exemple, ne faites passer que des objets natifs vers/depuis la DLL), vous pouvez utiliser la même DLL dans une application/application C# app win32 sans problème.

1

Vous pouvez l'utiliser comme une DLL standard plutôt qu'une extension MFC et ce serait mon choix préféré.