实现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() CDogClass::~CDogClass() void CDogClass::Init() |
编辑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(); |
从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了。
转载于:https://www.cnblogs.com/chenzuoyou/p/3459349.html
实现MFC扩展DLL中导出类和对话框相关推荐
- DLL入门浅析(4)——从DLL中导出类
前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了. DLL头文件: #ifndef _DLL_SAMPLE_H #de ...
- MFC制作DLL(导出类和函数)
学了2天MFC导出DLL,发现网上描述的都不是很彻底,我这里给一个教程,希望大家能参考一次成功. 我用VC6,其他版本基本雷同. 首先,VC6新建项目,如下图流程: 点击文件–保存工作空间,把我们的劳 ...
- VC++6 开发MFC扩展DLL以及MFC DLL可以包含界面
VC环境可以开发win32 DLL和MFC DLL:下面来开发一个MFC DLL:Win7, VC6: 新建一个MFC exe工程:名为mfcddd:在同级目录下新建一个文件夹,名为mfcbin: 默 ...
- VC++动态链接库(DLL)编程(四)――MFC扩展 DLL
VC++动态链接库(DLL)编程(四) ――MFC扩展 DLL 作者:宋宝华 e-mail:21cnbao@21cn.com 前文我们对非MFC DLL和MFC规则DLL进行了介绍,现在开始详细 ...
- MFC扩展DLL添加对话框资源时对话框ID是“未声明标识符”
1 问题提出 在MFC扩展DLL中添加对话框资源后,为该对话框资源添加对应的类之后,编译程序会显示"error C2065: "IDD_DIALOG1":未声明的标识符& ...
- DLL中导出函数的声明有两种方式
本文引用自:VC编程时DLL中导出函数的声明有两种方式 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链 ...
- DLL入门浅析(3)——从DLL中导出变量
前面介绍了怎么从DLL中导出函数,下面我们来看一下如何从DLL中导出变量来. 声明为导出变量时,同样有两种方法: 第一种是用__declspec进行导出声明 #ifndef _DLL_SAMPL ...
- MFC的DLL中实现定时器功能
方法一:创建一个线程, 反复读系统时间不就可以了? 如果定时要求不严,用Sleep就可以了.DWORD WINAPI TimerThread(LPVOID pamaram) { UINT oldTic ...
- dll的概念、dll导出类(转)
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...
- C++ DLL总结—静动态调用、导出类
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...
最新文章
- iOS 实现点击微信头像效果
- java学习笔记(2)
- visual studio installer正在提取文件_并非危言耸听,赶紧检查自己网盘内的私密文件...
- java个人所得税计算_java个人所得税计算器 | 学步园
- Swift - 12 - 区间运算符和for-in
- android 模糊查询搜索框_彻底搞懂 iOS 和 Android 的设计差异
- jvm_垃圾收集算法讲解(一)
- Spring中的用到的设计模式大全
- idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试
- java中mvc事务_Spring MVC 事务配置
- AndroidStudio Git 更改gitlab 地址
- mysql主从配置对解决并发有用_MySQL主从配置,读写分离
- 【k8s】K8S中的IP地址(Node IP、Pod IP、Cluster IP、External IP、Internal-IP)
- 小米9se无法连接adb的问题
- 00截断上传绕过_Getshell | 文件上传绕过整理
- 专题:固体力学中应力与应变分析详解(4.应力张量的转换)
- 树莓派简单摄像头录像并保存视频文件
- 【页面置换】页面置换算法的设计
- 百度云服务器BCC 调用百度人工智能API失败的解决方法
- 【SQLSERVER 2000】由于数据移动,未能继续以 NOLOCK 方式扫描
热门文章
- Java SE 基础:List 集合列表
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-2.微服务下登录检验解决方案 JWT讲解...
- 黄老师架构师课程笔记(一)反射
- tensorflow 变量共享
- 【转】解决“你没有权限访问,请与网络管理员联系”
- 集合代码----小练习3
- OpenSift源代码编译过程记录
- ASP.NET中用healthMonitor属性用法
- 【msdn】配置 ReportViewer 以进行远程处理
- 为.net开发者提供的一份关于存储过程的评论(转载)