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系统中桌面右键点属性,弹出的就是属性页对话框,它通过 ...
随机推荐
- java mail 接收邮件
package com.mw.utils; import com.mw.bean.SmsAlarmLogBean; import javax.mail.*; import javax.mail.int ...
- Java并发编程之并发容器
解决并发情况下的容器线程安全问题的.给多线程环境准备一个线程安全的容器对象. 线程安全的容器对象: Vector, Hashtable.线程安全容器对象,都是使用 synchronized 方法实现的 ...
- 【Rails App】 应用服务器从Passenger切换为Puma, Grape出现线程安全问题
Grape中的代码如下: def market @market ||= Market.find(params[:id]) end @market基于类层次的实例变量,属于非线程安全,如果一直使用多线程 ...
- DOCKER学习 docker
DOCKER只能安装到LIUX系列机器上 如果WINDOWS想安装必须通过虚拟机来完成. 比如用VM,VBOX等 安装之前需要用ROOT账户 su 安装DOCKER (CE是个人版本,EE是企业版本) ...
- Program Hyundai i20 Smart Key with VVDI & Xtool X100 Pad2
How-to: generate and program Hyundai i20 smart key with VVDI Mini Key Tool and XTOOL X100 PAD2. Step ...
- 201621123002《Java程序设计》第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...
- 结对项目——四则运算GUI项目
一.项目地址:https://git.coding.net/lvgx/wsz.git 二.PSP: PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min) Plannin ...
- 那一夜,风雪交加,我在搞jquery------专题之jquery选择器
我们今天探讨下Jquery的用法,主要是研究选择器. 选择器可以分成四类: 1.基本选择器 核心代码: <script type="text/javascript"> ...
- MWeb for Mac使用教程-如何在文档库中快速搜索
使用MWeb for Mac专业的 Markdown 编辑写作软件,可以让你随时记录自己的想法,灵感,创意,为您的工作节省宝贵的时间.本篇文章带来的是MWeb for Mac如何在文档库中快速搜索使用 ...
- Django学习笔记(进阶篇)
Django学习笔记(进阶篇):http://www.cnblogs.com/wupeiqi/articles/5246483.html