当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 一步一步实现MFC扩展DLL中导出类和对话框

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 208 ::
收藏到网摘: n/a

一步一步实现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:[email protected]