如何製作帶MFC介面的DLL?

Tags: 動態, 介面,

在做基於元件化MFC介面的開發時,需要把介面封裝到動態庫中。那麼如何實現呢?

工具/原料

Visual Studio 2010

方法/步驟

新建MFC DLL專案,專案名稱“MyDLL”,建立新解決方案,解決方案名稱為“MFCDLL”。

如何製作帶MFC介面的DLL

進入MFC DLL嚮導,選擇下一步,選擇“使用共享MFC DLL的規則DLL”。點選“完成”按鈕。

如何製作帶MFC介面的DLL

如何製作帶MFC介面的DLL

建立MFC DLL專案成功。執行時庫選擇:屬性-->c/c++-->程式碼生成-->執行庫 “多執行緒除錯 DLL (/MDd)”。

如何製作帶MFC介面的DLL

如何製作帶MFC介面的DLL

點選專案右鍵,新增MFC類。輸入類名:IHpDllWin,選擇基類:CDialog,點選完成。

如何製作帶MFC介面的DLL

如何製作帶MFC介面的DLL

動態庫將定義一個匯出函式,該函式返回匯出介面基類的指標。在IHpDllWin.cpp寫匯出介面:

// 定義匯出介面

extern "C" __declspec(dllexport) IHpDllWin* ShowDialog()

{

// 切記,此處需要加下面這行程式碼,不然對話方塊顯示不出來。

AFX_MANAGE_STATE(AfxGetStaticModuleState());

IHpDllWin *ph = new IHpDllWin;

ph->Create(IHpDllWin::IDD);

ph->ShowWindow(SW_SHOW);

return ph;

}

生成MyDLL.dll。MFC DLL程式建立完成。

新建MFC應用程式,名稱為MyMFC,解決方案名稱為MFCEXE。

如何製作帶MFC介面的DLL

進入MFC應用程式嚮導,點選下一步,應用程式型別選擇“基於對話方塊”,然後一直點選下一步,最後點選完成。

如何製作帶MFC介面的DLL

如何製作帶MFC介面的DLL

如何製作帶MFC介面的DLL

在對話方塊中拖入按鈕,雙擊該按鈕,進入程式碼編輯。

如何製作帶MFC介面的DLL

採用動態方式呼叫該動態庫,呼叫步驟如下:

1.載入動態庫

HINSTANCE m_hDll = LoadLibrary("MyDLL.dll");

if (NULL == m_hDll)

{

MessageBox("載入 MyDLL.dll 失敗");

}

2.獲取匯出函式指標

typedef IHpDllWin* (*hpDllFun)();

hpDllFun pShowDlg = (hpDllFun)GetProcAddress(m_hDll,"ShowDialog");

if (NULL==pShowDlg)

{

MessageBox("DLL中函式尋找失敗");

return;

}

3.獲取匯出類物件指標

IHpDllWin* m_hpwin = pShowDlg();

獲取匯出視窗類指標,獲取了對該匯出視窗的控制。

如何製作帶MFC介面的DLL

把MyDLL.dll拷到目標工程的Debug目錄下,複製IHpDllWin.h到目標工程的目錄下。

新增IHpDllWin.h,右鍵,新增現有項,選擇IHpDllWin.h,新增。

如何製作帶MFC介面的DLL

如何製作帶MFC介面的DLL

在MyMFCDlg.cpp頭部加入#include "IHpDllWin.h",然後編譯生成exe。主介面完成。

執行。按“Ctrl+F5”執行,執行結果如圖。

如何製作帶MFC介面的DLL

注意事項

因為IHpDllWin.h是自動生成的,裡面IDD=IDD_IHPDLLWIN的IDD_IHPDLLWIN會出現未定義,進行修改即可

本例子為簡單的呼叫MFC DLL,沒有其他功能,只是一個點選按鈕然後彈出另一個DLL的對話方塊。

相關問題答案