views:

38

answers:

2

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.

+1  A: 

You'll be fine to do it as a regular DLL rather than an MFC extension and would be my preferred choice.

ChrisBD
+1  A: 

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.

Darren Ford