本文实例讲述了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; }; };
CDogClass::CDogClass() { Init(); } CDogClass::~CDogClass() {} void CDogClass::Init() { m_nNum = 0; m_sData = ""; }
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 测试程序
步骤:
新建一个基于对话框的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); } }
在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
上一章我们为 Scribble 新增了一个【Pen】选单,其中第二个命令项【Pen Width...】准备用来提供一个对话框,让使用者设定笔的宽度。每一线条都可以拥有自己的笔宽。原预设粗笔是5个图素宽,细笔是2个图素宽。 为了这样的目的,在对话框中放个 Spin 控制组件是极佳的选择。Spin 就是那种有着上下小三角形箭头、可搭配一个文字显示器的控制组件,有点像转轮,用来选择数字最合适: 但是,S
本文向大家介绍Android AlertDialog实现分享对话框/退出对话框/下载对话框,包括了Android AlertDialog实现分享对话框/退出对话框/下载对话框的使用技巧和注意事项,需要的朋友参考一下 一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框;双击返回按钮,弹窗退出对话框;下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直
本文向大家介绍MFC对话框自定义消息映射的方法,包括了MFC对话框自定义消息映射的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MFC对话框自定义消息映射的方法。分享给大家供大家参考。具体实现方法如下: 1、定义消息: 2、定义消息响应函数: 3、在窗口类头文件的AFX_MSG中声明消息响应函数: 4、在窗口类实现文件的MESSAGE_MAP中声明消息映射,这里需要用到ON_MESS
本文向大家介绍MFC实现对话框编辑控件上拖拽文件,包括了MFC实现对话框编辑控件上拖拽文件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了MFC实现对话框编辑控件上拖拽文件的具体代码,供大家参考,具体内容如下 步骤 1、重载CEdit类 2、添加编辑框控件 首先,重载CEdit类,定义一个派生类CDragEdit类,并重载它的WM_CREATE方法,在其中添加DragAcceptFi