




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、于东2015,第2周对话框程序的文件结构对话框程序执行流程23CDialog类的派生类编程的主要内容用 Appwizard生成对话框程序将自动生成:4 StdAfx.cpp StdAfx.h预编译头文件 W1_2.cppW1_2.hCWinApp的派生类W1_2Dlg.cpp W1_2Dlg.h CDlg的派生类 Resource.h 程序资源头文件 W1_2.rc程序资源文件 res 程序资源文件夹不可缺少,一般不需要修改所有的源文件和头文件均成对出现,且均是MFC类库中类的派生类型。程序“资源”。定义了程序的外观、以及各个对象对应的资源编号。将逐步深入介绍。5 ReadMe.txt自动生成
2、的说明文件 W1_2.clw类向导使用的文件 W1_2.dsp工程文件 W1_2.dsw项目文件(启动) W1_2.ncb支持ClassView的文件 W1_2.opt配置文件 W1_2.plg日志文件这些都是自动生成的,与程序功能和编译无关,也不需要知道它们的内部结构,记住一个原则即可:原则原则2 2:只修改:只修改 * *.cpp.cpp 和和 * *.h .h文件,其他一概不理。文件,其他一概不理。6我们自己添加的函数、变量。7基于对话框的程序,其核心是由基于对话框的程序,其核心是由CWinAppCWinApp和和CDialogCDialog类中类中派生派生出来的出来的两个类。两个类。对
3、话框程序的编程,可以看作是对对话框程序的编程,可以看作是对两个派生类的编程。两个派生类的编程。其中,主要是以消息响应函数的形其中,主要是以消息响应函数的形式,在式,在CDialogCDialog类的派生类中编写代类的派生类中编写代码。码。8由框架生成的类的第一部分,重载基类虚函数重载基类虚函数,这里只重载了一个函数: InitInstanceInitInstance() ()由框架生成的类的第二部分,类的实现类的实现,这部分是用来响应消息的。9这一部分,是用来实现消息映射消息映射、消息响应消息响应的。暂时先不用去明白其原理。以后会讲到。有且仅有一个的程序对象程序对象。10声明一个Dialog类
4、对象。m_pMainWndm_pMainWnd是App的基类中的一个指针对象。一些选项,不用理会调用DoModalDoModal() ()方法,完成窗口的创建、显示。我们在后续课程中会学到该方法。这里仅了解即可。 AppApp类的类的构造函数构造函数和和InitInstanceInitInstance() ()是框架中最先被是框架中最先被调用的,起到类似于调用的,起到类似于main()main()的作用。的作用。 在初始化函数在初始化函数InitInstanceInitInstance中声明程序主窗口对象中声明程序主窗口对象 CW2_3DlgCW2_3Dlg dlgdlg ; ; 并且创建并显
5、示这个窗口。并且创建并显示这个窗口。 App.cppApp.cpp文件中声明了唯一的全局文件中声明了唯一的全局AppApp类对象:类对象: CW2_3AppCW2_3App theApptheApp; ;11 AppApp类中,通过下面的类中,通过下面的三大宏三大宏(先不必管什么意思),(先不必管什么意思),实现该类的消息映射和响应。实现该类的消息映射和响应。 实际上,实际上,MFCMFC框架程序中所有框架程序中所有框架类框架类都有这都有这三大宏。三大宏。12在在.h .h文件中文件中在在. .cppcpp文件中文件中对话框程序的文件结构 AppApp类类 DlgDlg类类MFC程序执行流程M
6、FC中的消息响应过程控件的手工操作和使用1314重载自基函数,数据交换函数。通过类向导添加的成员变量对话框数据15三大宏:消息映射该类的所有消息响应函数程序图标句柄16DlgDlg类的构造函数中自动初始化了我们添加的类的构造函数中自动初始化了我们添加的各个变量,最后调用全局函各个变量,最后调用全局函数数LoadIconLoadIcon,装载,装载默认的程序图标默认的程序图标变量的初始化 著名的著名的MFCMFC的的DDXDDX机制:每当通过机制:每当通过ClassWizardClassWizard为控件添加为控件添加一个变量时,就会自动添加该变量的一个一个变量时,就会自动添加该变量的一个DDX
7、DDX到该函数中。到该函数中。 DDXDDX实现控件实现控件资源资源IDID与与成员变量成员变量的的“绑定绑定”。 每当调用每当调用updatedataupdatedata() ()函数,就会调用函数,就会调用DoDataExchangeDoDataExchange().().1718DlgDlg类中的所有类中的所有消息响应函数消息响应函数都被放在这里。都被放在这里。这几个函数是这几个函数是MFCMFC框架中默认为对话框程序添加的系统消框架中默认为对话框程序添加的系统消息响应函数。息响应函数。 程序程序CreateCreate一个对话框后,首先调用对话框的构造函数,一个对话框后,首先调用对话框
8、的构造函数,接着就调用接着就调用OnInitDialogOnInitDialog函数。函数。 在程序位置改变、需要刷新页面时,调用在程序位置改变、需要刷新页面时,调用OnPaintOnPaint() () 其他先不必理会。其他先不必理会。1920预编译头文件 StdAfx.h资源描述文件*.rc 图标资源文件*.ico 资源头文件Resource.h21定义了所有资源的IDDlg程序中: AppApp类中的类中的InitInstanceInitInstance可以看作程序的可以看作程序的mainmain,实现程序启动和窗,实现程序启动和窗口创建。口创建。 DlgDlg 类中的类中的OnInit
9、ialDialogOnInitialDialog可以看作初始化函数,用来在程序运可以看作初始化函数,用来在程序运行开始前,对程序进行设置。行开始前,对程序进行设置。但:“可以看作” “就是” MFCMFC的的MainMain函数叫做函数叫做 AfxWinMainAfxWinMain。它被作为它被作为MFCMFC的全局函数,的全局函数,独立于独立于MFCMFC类库存在,用户无法修改(因此也没有必要学习)。类库存在,用户无法修改(因此也没有必要学习)。 在程序启动以后,首先调用在程序启动以后,首先调用AfxWinMainAfxWinMain,然后找到唯一的,然后找到唯一的AppApp类类对象,调用其对象,调用其InitInstanceInitInstance,启动程序。,启动程序。22int AFXAPI AfxWinMain()/.CWinApp* pApp = AfxGetApp(); if ( ! pThread-InitInstance() )/. error procnRCode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资助学生的感谢信(15篇)
- 语文教研活动总结合集15篇
- 二年级数学100以内加减法竖式计算题单元练习习题大全附答案
- 徐州骏宏通集装箱制造有限公司年产2000个集装箱技改项目环境影响报告表
- 红领巾奖章个人事迹
- 银行工作人员工作总结20篇
- 药店防潮知识
- 2025喜乐元宵互动亲子国潮元宵佳节正月十五民俗主题活动策划方案
- 家庭教育中责任心的重要性与培养方法
- 道路交通安全标志课件
- 园林绿化养护管理工程技术标
- 个人雇佣保安合同范例
- 房地产-工程第三方检查评估方案
- 【MOOC】机械制图-江苏大学 中国大学慕课MOOC答案
- 专题17 电与磁(5大模块知识清单+4个易混易错+4种方法技巧+典例真题解析)
- 人教版(2024版)七年级地理上册2.1《地图的阅读》分层作业
- 装配式建筑工程设计文件编制深度标准 DG-TJ08-2349-2022
- 有害物质过程管理系统HSPM培训教材
- 北京工业大学《算法设计》2022-2023学年期末试卷
- 班主任工作培训内容
- 桂林市民政局离婚协议书范文
评论
0/150
提交评论