一步一步實(shí)現MFC擴展DLL中導出類(lèi)和對話(huà)框
作者:江上飛鳥(niǎo)
下載源代碼
如果要編寫(xiě)模塊化的軟件,就要對對動(dòng)態(tài)鏈接庫(DLL)有一定的了解,本人這段時(shí)間在修改以前的軟件時(shí),決定把重復用的類(lèi)和對話(huà)框做到DLL中,下面就從一個(gè)簡(jiǎn)單的例子講起,如何實(shí)現MFC擴展DLL中導出類(lèi)和對話(huà)框。

以上完成建立擴展DLL的框架,下面接著(zhù)建立輸出類(lèi):
Insert-> New Class...在打開(kāi)的對話(huà)框中,"Class Type" 選擇"Generic Class",Class Name 中輸入
CDogClass(當然你可以用其它的名稱(chēng),我喜歡小狗,所有用它了,在"Base Class"下輸入CObject,然后"OK";
為類(lèi)添加兩個(gè)測試用的變量 int m_nNum;CString m_sData;完全的類(lèi)信息如下:
DogClass.h頭文件:
class CDogClass : public CObject{private : int m_nNum; CString m_sData;public: int ShowDlg(); void Init(); CDogClass(); virtual ~CDogClass(); void SetNum(int num) { m_nNum = num;}; int GetNum() { return m_nNum; }; void SetData(CString data) { m_sData = data;}; CString GetData() { return m_sData; };};DogClass.cpp實(shí)現文件:CDogClass::CDogClass(){ Init();}CDogClass::~CDogClass(){}void CDogClass::Init(){ m_nNum = 0; m_sData = "";} 編輯DogClass.h頭文件修改下面一行;class AFX_EXT_CLASS CDogClass : public CObject
以上完成類(lèi)的建立,下面建立輸出對話(huà)框;
Insert-> Resouce...新建立一個(gè)對話(huà)框,添加兩個(gè)編輯框IDC_EDIT1,IDC_EDIT2,然后建立CDlgDog對話(huà)框類(lèi)并為兩編輯框添加int m_nNum和CString m_sData的變量。
在DogClass.cpp的#include "DogClass.h"下加入#include "DlgDog.h"
在DogClass類(lèi)中添加int ShowDlg();函數用來(lái)調用對話(huà)框,并在int CDogClass::ShowDlg()中添加如下代碼:
CDlgDog dlg;dlg.m_nNum = GetNum();dlg.m_sData = GetData();if (IDOK==dlg.DoModal()){ SetNum(dlg.m_nNum); SetData(dlg.m_sData); return 1;}return 0; 然后編譯Dll,會(huì )發(fā)現有幾個(gè)錯誤,不用怕,好解決的,void CTestExportClassDlg::OnButton1(){ CDogClass dog; dog.Init(); if (dog.ShowDlg()!=0) { CString str; str.Format("Num is: %d Data is: %s" dog.GetNum(), dog.GetData()); AfxMessageBox(str); }} 從ExportClass文件目錄拷貝DogClass.h和ExportClass.lib文件到測試程序目錄下;聯(lián)系客服