对话框程序代码详解PPT课件_第1页
对话框程序代码详解PPT课件_第2页
对话框程序代码详解PPT课件_第3页
对话框程序代码详解PPT课件_第4页
对话框程序代码详解PPT课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

对话框程序代码详解 于东2015 第2周 对话框程序的文件结构对话框程序执行流程 2 本课内容 3 对话框程序的类结构 CDialog类的派生类编程的主要内容 用Appwizard生成对话框程序将自动生成 4 对话框程序的文件组织 StdAfx cppStdAfx h预编译头文件W1 2 cppW1 2 hCWinApp的派生类W1 2Dlg cppW1 2Dlg hCDlg的派生类Resource h程序资源头文件W1 2 rc程序资源文件res程序资源文件夹 不可缺少 一般不需要修改 所有的源文件和头文件均成对出现 且均是MFC类库中类的派生类型 程序 资源 定义了程序的外观 以及各个对象对应的资源编号 将逐步深入介绍 5 对话框程序的文件组织 ReadMe txt自动生成的说明文件W1 2 clw类向导使用的文件W1 2 dsp工程文件W1 2 dsw项目文件 启动 W1 2 ncb支持ClassView的文件W1 2 opt配置文件W1 2 plg日志文件 这些都是自动生成的 与程序功能和编译无关 也不需要知道它们的内部结构 记住一个原则即可 原则2 只修改 cpp和 h文件 其他一概不理 6 文件与类 我们自己添加的函数 变量 7 基于对话框的程序 其核心是由CWinApp和CDialog类中派生出来的两个类 对话框程序的编程 可以看作是对两个派生类的编程 其中 主要是以消息响应函数的形式 在CDialog类的派生类中编写代码 8 App h文件 由框架生成的类的第一部分 重载基类虚函数 这里只重载了一个函数 InitInstance 由框架生成的类的第二部分 类的实现 这部分是用来响应消息的 9 App cpp 1 这一部分 是用来实现消息映射 消息响应的 暂时先不用去明白其原理 以后会讲到 有且仅有一个的程序对象 10 App cpp 2 InitInstance函数 声明一个Dialog类对象 m pMainWnd是App的基类中的一个指针对象 一些选项 不用理会 调用DoModal 方法 完成窗口的创建 显示 我们在后续课程中会学到该方法 这里仅了解即可 App类的构造函数和InitInstance 是框架中最先被调用的 起到类似于main 的作用 在初始化函数InitInstance中声明程序主窗口对象CW2 3Dlgdlg 并且创建并显示这个窗口 App cpp文件中声明了唯一的全局App类对象 CW2 3ApptheApp 11 App类小结 1 App类中 通过下面的三大宏 先不必管什么意思 实现该类的消息映射和响应 实际上 MFC框架程序中所有框架类都有这三大宏 12 App类小结 2 对话框程序的文件结构App类Dlg类MFC程序执行流程MFC中的消息响应过程控件的手工操作和使用 13 本课内容 14 Dlg h 1 对话框数据部分 重载自基函数 数据交换函数 通过类向导添加的成员变量 对话框数据 15 Dlg h 2 对话框实现部分 三大宏 消息映射 该类的所有消息响应函数 程序图标句柄 16 Dlg cpp 1 构造函数 Dlg类的构造函数中自动初始化了我们添加的各个变量 最后调用全局函数LoadIcon 装载默认的程序图标 变量的初始化 著名的MFC的DDX机制 每当通过ClassWizard为控件添加一个变量时 就会自动添加该变量的一个DDX到该函数中 DDX实现控件资源ID与成员变量的 绑定 每当调用updatedata 函数 就会调用DoDataExchange 17 Dlg cpp 2 MFC控件的DDX 18 Dlg cpp 3 再现三大宏 Dlg类中的所有消息响应函数都被放在这里 这几个函数是MFC框架中默认为对话框程序添加的系统消息响应函数 程序Create一个对话框后 首先调用对话框的构造函数 接着就调用OnInitDialog函数 在程序位置改变 需要刷新页面时 调用OnPaint 其他先不必理会 19 Dlg cpp 4 其他函数 20 小结 App与Dlg结构共同点 预编译头文件StdAfx h资源描述文件 rc图标资源文件 ico资源头文件Resource h 21 工程中的其他文件 定义了所有资源的ID Dlg程序中 App类中的InitInstance可以看作程序的main 实现程序启动和窗口创建 Dlg类中的OnInitialDialog可以看作初始化函数 用来在程序运行开始前 对程序进行设置 但 可以看作 就是 MFC的Main函数叫做AfxWinMain 它被作为MFC的全局函数 独立于MFC类库存在 用户无法修改 因此也没有必要学习 在程序启动以后 首先调用AfxWinMain 然后找到唯一的App类对象 调用其InitInstance 启动程序 22 问题 代码中没看到main intAFXAPIAfxWinMain CWinApp pApp AfxGetApp if pThread InitInstance errorproc nRCode pThread Run 23 程序的执行流程 演示 MFC全局

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论