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

saitou0112

saitou0112

2016-01-29 12:27

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

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

作者:江上飞鸟

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)


下载源代码

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



一、创建MFC扩展DLL

步骤:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)运行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
 

展开更多 50%)
分享

猜你喜欢

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

C语言教程 C语言函数
一步一步实现MFC扩展DLL中导出类和对话框

一步一步优化Windows XP(1)

windows 操作系统
一步一步优化Windows XP(1)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

一步一步教你简单装机教程

电脑入门
一步一步教你简单装机教程

一步一步优化Windows XP(2)

windows 操作系统
一步一步优化Windows XP(2)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一步一步做汤圆的家常做法

汤圆 小吃
一步一步做汤圆的家常做法

一步一步学Windows XP安全设置

windows 操作系统
一步一步学Windows XP安全设置

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

.NET编程规范

.NET编程规范

精通 VC 与 MATLAB 联合编程——综合举例一

精通 VC 与 MATLAB 联合编程——综合举例一
下拉加载更多内容 ↓