When creating a MFC DLL project in VC++ 2005, you get a screen “application settings” with a choice of Regular DLL with static/dynamic MFC, or an MFC Extension DLL.
We want a DLL that contains a few common dialogs, so we can use them in other projects e.g:
CGetNameDlg *dlg = new CGetNameDlg();
dlg->doModal();
string name = dlg->getName();
delete dlg;
We’re not sure whether this requires an extension DLL… if those are specifically for adding new controls to enhance MFC itself, or if we just do a regular DLL project linking to MFC dynamically, like we would if it was an EXE project.
Personally, I’d create a regular DLL. I find that a regular DLL gives a much greater separation of code than an extension DLL, with the added complexity of having the use the AFX_MANAGE_STATE() macro at the entry point of each call into the DLL.
And if you design your code well (eg. pass only native objects to/from the DLL), you can use the same DLL in a plain win32 app/C# app/VB app with little trouble.