一步一步实现MFC扩展DLL中导出类和对话框
来源:百度文库 编辑:神马文学网 时间:2024/06/30 19:03:40
作者:
如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对话框。
![](http://image3.360doc.cn/DownloadImg/2009/1/22/799_2381304_1.jpg)
一、创建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
如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对话框。
![](http://image3.360doc.cn/DownloadImg/2009/1/22/799_2381304_1.jpg)
一、创建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
一步一步实现MFC扩展DLL中导出类和对话框
dll中如何得到一个对话框的句柄 - VC/MFC / 基础类
MFC中基于对话框程序快捷键的实现
MFC中基于对话框程序快捷键的实现
VC DLL导出类
用DLL实现把数据库的记录导出到EXCEL中(VB) - 应用程序 - VB教程
怎样实现WebBrowser中另存为对话框功能?
Quartz中扩展MethodInvokingJobDetailFactoryBean实现...
vc中如何调用webservice? VC/MFC / 进程/线程/DLL
在 Visual C++ 中 建 立 MFC 扩 展 DLL
MFC DLL向导(摘)
DLL导出类 - 时间的痕迹 - C++博客
应用程序扩展文件DLL
MFC在线英文教程DLL
vc中如何调用webservice? VC/MFC / 进程/线程/DLL - CSDN社...
Visual C++中调用DLL实现数据加密
扩展JAAS实现类实例级授权
如何让基于对话框的MFC程序启动后自动隐藏对话框 VC/MFC / 界面
DLL导出类的问题,C++技术文章,C++系列教程,C++
使用 DEF 文件从 DLL 导出
使用MFC DLL基础教程基础实例
不规则对话框的又一实现
MFC中常用类,宏,函数介绍
Windows XP中如何导入和导出注册表!