MFC对话框和属性表
对话框主要有两类,分为模式和无模式,它们的功能都被封装在了CDialog中。与对话框相近的是属性表,属性表实际上是具有制表页(TAB 页)的对话框,将对话框中控件更好的组织在一起。借助CpropertySheet和CpropertyPage类,MFC简化了属性表的处理。
模式对话框和无模式对话框
一般来说模式对话框的创建包括3步:1、创建一个对话框模板;2、实例化该模板得到一个对象;3、调用Cdialog::DoModal函数来显示对话框。
无模式对话框和模式对话框有很多相同点,两者主要的区别在于:
1、 显示无模式对话框需要调用Cdialog::Create函数而模式对话框调用Cdialog::DoModal函数。DoModal函数会等到对话框被清除后才返回,而Create等到对话框建立完成后就会返回。
2、 清除无模式的对话框需要调用DestroyWindow而不是EndDialog,禁止无模式对话框调用OnOK和OnCancel函数,因为这两个函数都会调用EndDialog函数。
3、 模式对话框通常在栈上实例化,所以析构是自动实现的。而无模式对话框通过new实例化,所以该对象不会过早地被清除,如果要确保清除对话框删除无模式对话框对象,一种方法是在派生的对话框类中覆盖Cdialog::PostNcDestroy并执行delete this。
属性表
属性表示包含控件也的标签式对话框,用户可通过单击鼠标在其间切换。属性表的功能都合理地封装在一对MFC类----CpropertySheet和CpropertyPage中。CpropertySheet代表属性表本身,从Cwnd派生而来;CpropertyPage代表属性表中的页,是从Cdialog中派生而来的。和对话框一样,属性表可以是模式和无模式的。
创建属性表的步骤如下:
1、 针对属性表的每一页创建一个对话框模板,定义页的内容和特性。将对话框标题设置成您希望在属性表页上方标签中显现的标题。
2、 针对属性表的每一页由CpropertyPage派生出一个类似对话框的类。
3、 由CpropertySheet派生出衣蛾属性表类,将该类和步骤2中得到的属性表页实例化,利用CpropertySheet::AddPage将各页按期望中的显示顺序添加到属性表中。
4、 调用属性表的DoModal函数将属性表显示在屏幕上。
通常情况下,我们会利用DDX和DDV实现控件和属性表页数据成员间的数据传输,因为这可以将属性表处理中许多困难的工作交给MFC去做。通过覆盖页的OnInitDialog、OnSetActive、OnKillActive、OnOK和OnCancel函数并执行特有的处理过程,您可以定义属性表的操作,但是一定要调用基类中的等价函数,否则,主结构不能工作。
MFC对话框和属性表的更多相关文章
- 【转】MFC 对话框Border属性设置(None、Thin、Resizing、Dialog Frame)
对话框的Border属性对应的值设置 Dialog Frame WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPSIBLINGS | DS_MODALFRAME ...
- MFC中属性表单和向导对话框的使用
每次在使用MFC创建一个框架时,需要一步步选择自己的程序的外观,基本功能等选项,最后MFC会生成一个基本的程序框架,这个就是向导对话框:而属性表单则是另外一种对话框,表单上有多个属性页,每点击某一页, ...
- MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)
前面讲了模态对话框和非模态对话框,本节来将一种特殊的对话框--属性页对话框. 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面 ...
- VS2010/MFC对话框一:创建对话框模板和修改对话框属性
创建对话框主要分两大步: 第一,创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件: 第二,生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 创建 ...
- VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)
前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...
- VS2010/MFC对话框:一般属性页对话框的创建及显示
一般属性页对话框的创建及显示 本节将介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.鸡啄米将上一节中的向导对话框进行少量修改,使其成为一般属性页对话 ...
- MFC对话框
创建对话框步骤: 第一,创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件: 第二,生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 创建对话框类 ...
- VS2010/MFC对话框:向导对话框的创建及显示
向导对话框的创建及显示 本节将为大家演示如何创建向导对话框. 仍然以前面的“加法计算器”的例子为基础,在其中加入向导对话框,我们可以用它来说明加法计算器的使用方法,一步一步引导用户操作,这也是比较常见 ...
- VS2010-MFC(对话框:属性页对话框及相关类的介绍)
转自:http://www.jizhuomi.com/software/164.html 一 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过 ...
随机推荐
- LeetCode至 少有 1 位重复的数字
给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数. 示例 1: 输入:20 输出:1 解释:具有至少 1 位重复数字的正数(<= 20)只有 11 . 示例 2: 输入:10 ...
- Floyd-Warshall算法计算有向图的传递闭包
Floyd-Warshall算法是用来求解所有结点对最短路径的知名算法,其还有一个重要的用途就是求解有向图的传递闭包,下面就让我来介绍算法导论中关于有向图闭包计算的有关记载吧. 有向图的传递闭包:我们 ...
- atlium designer 我画的pcb板到出元件清单, 里面显示 Board Stack Report
1. 2.去掉选项即可 板的问题,在导出原件清单时,有一个模板选项,如果有,你就把他去掉,变成空白的,我的选上就是你的那种出错效果,去掉就好了.
- Hillstone设备管理-设备软件Stone-OS升级
1.通过sysloader进行StoneOS升级 1)给设备上电按提示按ESC并且进入 Sysloader.参照以下操作提示: 2)在下面选择对应的选项升级os,可以通过tftp.ftp.usb.系统 ...
- 矢量水听器 近场 远场 --------------------常规波束形成,MVDR的比较
摘自<水平线阵的反卷积常规波束形成>,IRONMAN--------------------------------------------------- 在常规的波束形成中,是将阵列上的 ...
- Winform 时间
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawi ...
- Unexpected character '�' (1:0) while parsing file
webpack打包,如果在html中有<img>标签,会打包不成功,因为找不到路径,所只要把图片放样式里就好了
- vuex中store保存的数据,刷新页面会清空
用vuex,项目中需要记录一些状态,来判断页面是否为登录状态和页面是否可被编辑,此时用到了vuex中的store来存储一个状态. //首先 安装vuex npm install vuex --save ...
- mvc @helper 创建用户自定义html
转载地址:https://www.cnblogs.com/caofangsheng/p/5670071.html
- 导入别人的项目eclipse 出现乱码 该如何处理