当前位置: 首页 > 编程笔记 >

MFC扩展DLL中导出类和对话框的实现方法

杜俊风
2023-03-14
本文向大家介绍MFC扩展DLL中导出类和对话框的实现方法,包括了MFC扩展DLL中导出类和对话框的实现方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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了。 
 
补充:

在vc6.0环境下调试时,上面步骤中 Insert-> Resouce...修改为: Insert——>Form

希望本文所述对大家的MFC程序设计有所帮助。

 类似资料:
  • 本文向大家介绍MFC对话框中添加状态栏的方法,包括了MFC对话框中添加状态栏的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MFC对话框中添加状态栏的方法。分享给大家供大家参考。具体如下: 1.在对话框的dlg实现类里添加成员变量: 2.添加OnKickIdle事件(在对话框的dlg的头文件加上) : 3.在实现类中添加对应的两个方法: 4.运行发现看不见状态栏,添加对话框的WM_S

  • 本文向大家介绍MFC设置对话框焦点的方法简述,包括了MFC设置对话框焦点的方法简述的使用技巧和注意事项,需要的朋友参考一下 本文简单讲述了MFC设置对话框焦点的方法,分享给大家供大家参考。具体实现方法如下: 具体的方法有两种: 1. 设置对话框控件的tab order。 按Ctrl+D即可看见。将需要被设置到焦点的空间的tab order设为1. 2. 对话框的OnInitDialog返回FALS

  • 本文向大家介绍Android AlertDialog实现分享对话框/退出对话框/下载对话框,包括了Android AlertDialog实现分享对话框/退出对话框/下载对话框的使用技巧和注意事项,需要的朋友参考一下 一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框;双击返回按钮,弹窗退出对话框;下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直

  • 上一章我们为 Scribble 新增了一个【Pen】选单,其中第二个命令项【Pen Width...】准备用来提供一个对话框,让使用者设定笔的宽度。每一线条都可以拥有自己的笔宽。原预设粗笔是5个图素宽,细笔是2个图素宽。 为了这样的目的,在对话框中放个 Spin 控制组件是极佳的选择。Spin 就是那种有着上下小三角形箭头、可搭配一个文字显示器的控制组件,有点像转轮,用来选择数字最合适: 但是,S

  • 本文向大家介绍MFC对话框自定义消息映射的方法,包括了MFC对话框自定义消息映射的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MFC对话框自定义消息映射的方法。分享给大家供大家参考。具体实现方法如下: 1、定义消息: 2、定义消息响应函数: 3、在窗口类头文件的AFX_MSG中声明消息响应函数: 4、在窗口类实现文件的MESSAGE_MAP中声明消息映射,这里需要用到ON_MESS

  • 本文向大家介绍Laravel框架中扩展函数、扩展自定义类的方法,包括了Laravel框架中扩展函数、扩展自定义类的方法的使用技巧和注意事项,需要的朋友参考一下 一、扩展自己的类 在app/ 下建立目录 libraries\class  然后myTest.php 类名格式 驼峰 myTest 在 app/start/global.php 用 make 载入 二、扩展自己的函数 在app/ 下建立目录