MFC常规DLL的创建与访问
关于mfc技术的入门文档
MFC常规DLL的创建与访问
谢命坚 湖南商务职业技术学院 410205
高了软件开发和维护的效率。因此,动态链接库备受软件技术人员的青睐。
1 动态链接库(DLL)的概念
引言
动态链接库(DLL)是Windows编程的重要技术。使用DLL技术有很多优点,不仅能让多个应用程序、甚至是不同语言编写的应用程序可以共享一个DLL文件,真正实现资源“共享”,缩小了应用程序的执行代码,更加有效地利用了内存,而且DLL文件作为一个单独的程序模块,封装性、
独立性好。这在编程时十分有用,大大提
动态链接库(Dynamic LinkLibrary,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。你可以简单地把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。如果采用静态链接库,则库中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。
Visual C++支持三种DLL,它们分别是非MFC动态库、MFC常规DLL、MFC扩展DLL。非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用
图1 学生基本信息对话框程序所调用;MFC常规DLL 包含一
表1 学生基本信息对话框添加的控件个CWinApp派生类,但没有消息循
环功能,常规DLL又可分为静态链接到MFC和动态链接到MFC两种;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。
AppWizard(exe)创建一个默认的单文档应用程序Ex_SDI。
(2)在工程Ex_SDI中创建如图1所示的学生基本信息对话框资源IDD_STUINFO,添加的控件如表1所示,创建此对话框类为CStuInfoDlg。
(3)完善CStuInfoDlg类代码①打开类向导的Member Variables页面,看Class name是否是CStuInfoDlg,依次为下列控件增加成员
2 MFC常规DLL的创建
第一步 创建一个默认的单文档(或多文档)应用程序,并添加资源(如对话框)。
(1)用MFC
表2 控件变量
关于mfc技术的入门文档
变量,如表2所示。
②为CStuInfoDlg类添加一个BOOL型成员变量m_bMale,并在CStuInfoDlg类设置该变量的初始值,代码如下:
CStuInfoDlg::CStuInfoDlg(CWnd*pParent /*=NULL*/)
: CDialog(CStuInfoDlg::IDD,
pParent)
{m_bMale=FALSE; }③用MFC的类向导为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加如下代码:
BOOL CStuInfoDlg::OnInitDialog(){
CDialog::OnInitDialog();if (!m_bMale)
CheckRadioButton
(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_FEMALE);
else
CheckRadioButton
(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_MALE);
m_comboSpecial.AddString("机械
工程及自动化");
m_comboSpecial.AddString("电气
工程及自动化");
m_comboSpecial.AddString("计算机科学");
m_strSpecial="计算机科学"; UpdateData(FALSE);return TRUE;}
④用MFC的类向导为单选按钮IDC_RADIO_MALE添加BN_CLICKED的消息映射,并添加如下代码:
void CStuInfoDlg::OnRadioMale(){ m_bMale=TRUE;}
⑤用MFC的类向导为单选按钮IDC_RADIO_FAMALE添加BN_CLICKED的消息映射,并添加如下代码:
void CStuInfoDlg::OnRadioFemale()
{m_bMale=FALSE; }
⑥用MFC的类向导为按钮IDOK添加BN_CLICKED的消息映射,并添加如下代码:
void CStuInfoDlg::OnOK()
库设为使用静态链接库。
UpdateData();(2)将EX_DLL工程中的Debug目m_strName.TrimLeft();录中的两个文件EX_DLL.dll和Ex_DLL.m_strNo.TrimLeft();lib复制到Ex_USEDLL工程目录中。 if (m_strName.IsEmpty())(3)打开文件stdafx.h,添加下列
MessageBox("必须要有姓代码:
名!");# progma comment(lib,"Ex_DLL")
else if (m_strNo.IsEmpty())extern "C"_declspec(dllimport) int MessageBox("必须要有ShowStuInfoDlg();学号!");( 4)打开菜单资源
elseIDR_MAINFRAME,添加一个顶层菜单
CDialog::OnOK();“操作”,在该菜单下添加一个子菜单}“测试”(ID_OP_TEST)。第二步 创建MFC常规DLL(5)用MFC类向导在CMainFrame(1)用MFC AppWizard(dll)创建类中添加ID_OP_TEST菜单的一个工程Ex_DLL,确定DLL的类型时选COMMAND消息映射,并在消息映射函择“动态链接库使用共享MFC DLL”。数中添加下列代码:
(2)将应用程序Ex_SDI中的对话Void CMainFrame::OnOpTest()框资源IDD_STUINFO和类CStuInfoDlg{ShowStuInfoDlg();}复制并添加到工程Ex_DLL,然后将(6)编译运行并测试。StuInfoDlg.cpp中的#include “Ex_SDI.3.2 显式链接h”该成#include “Ex_DLL.h”。显式链接是应用程序在执行过程中随
(3)在Ex_DLL.cpp文件的最后,时可以加载或卸载DLL文件,所以显式链添加导出函数ShowStuInfoDlg,代码如接具有更好的灵活性。要实现显式链下:接,首先在应用程序中用LoadLibrary或
extern "C"_decls …… 此处隐藏:3730字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




