筆者編寫了如圖12的對話框MFC程序(下載本工程
附件)來調用5.3節(jié)的MFC規(guī)則DLL,在這個程序的對話框上點擊“調用DLL”按鈕時彈出5.3節(jié)MFC規(guī)則DLL中的對話框。

圖12 MFC規(guī)則DLL的調用例子
下面是“調用DLL”按鈕單擊事件的消息處理函數:
void CRegularDllCallDlg::OnCalldllButton()
{
typedef void (*lpFun)(void);
HINSTANCE hDll; //DLL句柄
hDll = LoadLibrary("RegularDll.dll");
if (NULL==hDll)
{
MessageBox("DLL加載失敗");
}
lpFun addFun; //函數指針
lpFun pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg");
if (NULL==pShowDlg)
{
MessageBox("DLL中函數尋找失敗");
}
pShowDlg();
}
上述例子中給出的是顯示調用的方式,可以看出,其調用方式與第4節(jié)中非MFC DLL的調用方式沒有什么不同。
我們照樣可以在EXE程序中隱式調用MFC規(guī)則DLL,只需要將DLL工程生成的.lib文件和.dll文件拷入當前工程所在的目錄,并在RegularDllCallDlg.cpp文件(圖12所示對話框類的實現文件)的頂部添加:
#pragma comment(lib,"RegularDll.lib")
void ShowDlg(void);
并將void CRegularDllCallDlg::OnCalldllButton() 改為:
void CRegularDllCallDlg::OnCalldllButton()
{
ShowDlg();
}