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

2016-01-29 12:27 254 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

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

作者:江上飞鸟

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


下载源代码

  如果要编写模块化的软件,就要对对动态链接库(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
 

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

来源:http://www.tulaoshi.com/n/20160129/1486171.html

延伸阅读
标签: 微信
微信在我们生活中越来越普及。小编每天也都会上微 信,看一些喜欢的公众平台的信息。十分的方便,不再一条条的去找信息了解。今天小编跟大家分享一个如何搭建微信公众平台,就是如果喊上自己的朋友、同事,共同建立一个小平台。会不会很好玩呢?有事就直接发一个消息就可以通知到啦。下面跟小编一起来看看如何搭建微信公众平台吧! ...
标签: 怀孕
“成功等于一分天才加九十九分汗水”这就说明天才其实也是教导出来的,真正的天才能有多少呢?爱迪生也是经过千万次的失败才造就了现在的成功呢!想要宝宝聪明那就需要付出努力。怎么样做才能让宝宝更加聪明呢?第一步就要从孕期营养和胎教开始。 孕早期—胎教的开始时期 我们都知道,早孕反应是正常的生理现象,怀孕 3个月后会逐渐消失。...
标签: Web开发
jQuery 的plugin开发需要注意的事情, 1. 明确jQuery的命名空间只有一个。 2. 明白options参数用来控制plugin的行为。 3. 为默认的plugin设定提供公共的访问权限。 4. 为子函数提供公共的访问权限。 5. 私有的函数绝对是私有访问 6. 支持metadata plugin。 我将会在下面的例子中一个一个的说明上面这几个条件,做完这些事情后我们就会创建一个高...
洗澡时,我们经常会把耳朵弄进水,那么耳朵进水怎么办?耳朵疼是怎么回事呢?如何保护耳朵呢?保护耳朵的方法有哪些呢?下面一起和图老师小编来看看耳朵进水怎么办吧! 首先我们来看看耳朵进水怎么办?耳朵进水最快的急救方法是什么,一起来看看吧! 耳朵进水怎么办 在洗澡或者是游泳时,我们常常会遇到耳朵进水的情况,这会...
标签: 分娩
出生3个月的孩子应该可以: 看到你出现就露出笑容;听到巨大的响声会吓一跳;会发出咿咿呀呀的声音;当别人对他说话时,他会安静下来或者微笑;好像能辨别出你的声音;当孩子遇到不同问题时,啼哭的方式会不一样。 出生6个月的孩子应该可以: 当孩子自己玩或和大人嬉戏时会发出咯咯的笑声;能简单地重复一些音节,比如“爸”;用声...

经验教程

987

收藏

72
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部