MFC擴大DLL中導出類和對話框的完成辦法。本站提示廣大學習愛好者:(MFC擴大DLL中導出類和對話框的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是MFC擴大DLL中導出類和對話框的完成辦法正文
本文實例講述了MFC擴大DLL中導出類和對話框的完成辦法,分享給年夜家供年夜家參考。詳細完成辦法以下:
普通來講,假如要編寫模塊化的軟件,就要對對靜態鏈接庫(DLL)有必定的懂得,自己這段時光在修正之前的軟件時,決議把反復用的類和對話框做到DLL中,上面就從一個簡略的例子講起,若何完成MFC擴大DLL中導出類和對話框。
法式運轉成果以下圖所示:
1、創立MFC擴大DLL
步調:
運轉Visual Studio 6.0->File->New...->Projects;
選擇Mfc AppWizard(dll),在左邊Project name下輸出ExportClass,單擊“下一步”;
選擇Mfc Extension DLL (using share MFC DLL) 單擊“finish”;
以上完成樹立擴大DLL的框架,上面接著樹立輸入類:
Insert-> New Class...在翻開的對話框中,"Class Type" 選擇"Generic Class",Class Name 中輸出
CDogClass(固然你可以用其它的稱號,我愛好小狗,一切用它了,在"Base Class"下輸出CObject,然後"OK";
為類添加兩個測試用的變量 int m_nNum;CString m_sData;完整的類信息以下:
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完成文件:
CDogClass::CDogClass()
{
Init();
}
CDogClass::~CDogClass()
{}
void CDogClass::Init()
{
m_nNum = 0;
m_sData = "";
}
編纂DogClass.h頭文件修正上面一行;class AFX_EXT_CLASS CDogClass : public CObject
以上完成類的樹立,上面樹立輸入對話框;Insert-> Resouce...新樹立一個對話框,添加兩個編纂框IDC_EDIT1,IDC_EDIT2,然後樹立CDlgDog對話框類並為兩編纂框添加int m_nNum和CString m_sData的變量。
在DogClass.cpp的#include "DogClass.h"下參加#include "DlgDog.h"
在DogClass類中添加int ShowDlg();函數用來挪用對話框,並在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,會發明有幾個毛病,不消怕,好處理的,起首,去失落DlgDog.cpp中的 #include “/ add additional includes here”這一行;其次,在stdax.h中參加include "resource.h",再編譯,OK。
2、樹立DLL 測試法式
步調:
新建一個基於對話框的MFC運用法式,添加一按鈕IDC_BUTTON1,並在按鈕事宜中添加如以下代碼:
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文件到測試法式目次下;
在TestExportClassDlg.cpp中參加#include “DogClass.h”行;往銜接法式的導入庫中添加ExportClass.lib,在VS的Project->Settings下的Setting For選擇All Configuration.,然後鄙人面的頁面Object/Library Conttrol中參加ExportClass.lib;
別忘了把ExportClass.dll復制到體系目次或以後運用法式目次;然後編譯就OK了。
彌補:
在vc6.0情況下調試時,下面步調中 Insert-> Resouce...修正為: Insert——>Form
願望本文所述對年夜家的MFC法式設計有所贊助。