一步一步实现MFC扩展DLL中导出类和对话框

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

一步一步实现MFC扩展DLL中导出类和对话框

作者:江上飞鸟

下载源代码

如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对话框。

一、创建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。

二、建立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了。

QQ:36201365

e-mail:ldh5118@sohu.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有