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系统中桌面右键点属性,弹出的就是属性页对话框,它通过 ...
随机推荐
- Windows Server 2012 R2 双网卡绑定
双网卡绑定主要有以下两点好处: 1.实现网络容错:主主模式和主被模式 2.带宽聚合 首先准备工作需要两台虚拟机,Server01是目标服务器,需要有两块网卡,并且清空两块网卡的现有配置,Server0 ...
- 【Spring学习】Spring的源码解析之路 ——【step1】基础环境配置 + IDEA快捷键整理
前导: 本次主要是关于“基础环境搭建”的内容,分为三个部分,(1)查看源码和项目需要的开发集成环境Intellig IDEA的使用,(2)如何导入源码,(3)在这个过程中梳理出的快捷键 正文:==== ...
- PHP+Mysql 实现数据库增删改查(原生)
Mysql数据库创建 创建一个新闻列表的数据库: 1. 查询数据库 1.1. 创建文件dbconfig.php,保存常量 <?php define("HOST"," ...
- 探究osg中的程序设计模式【目录】
前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造 ...
- SpringBoot图片上传
毕设终于写到头像上传了,本来想用Vue写来着,但是一直不顺利,还是对Vue用的不太熟.所以就用jquery写了. 首先添加以下标签 <img id="avatarPreview&quo ...
- vue.js中axios的封装
基于前文所述,axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它有很多优秀的特性,例如拦截请求和响应.取消请求.转换json.客户端防御XSRF等. 如果还对a ...
- POS VB
PPSM06S70: Add moddate EDITSPRINTJOB: MAX(TO_CHAR(ETRN.MODDATE, 'yyyy/mm/dd/HH24:MI AM')) ACTUAL_ ...
- 使用WinMerge作为git的Merge工具
使用WinMerge作为git的Merge工具 我比较喜欢使用免费的WinMerge作为diff和merge工具,虽然TortoiseGit也自己带了TortoiseGitMerge工具,但是使用起来 ...
- Docker学习笔记:基础
docker的概念 :docker是一个可供开发者在容器中 开发 部署 运行 应用的一个平台.通过使用Linux容器去部署应用的方式称为容器化. 基础概念 Images and Container i ...
- eclipse 安装 maven
一共需要3个步骤,1 安装maven环境 2 安装eclipse的maven插件 3 配置eclipse的maven环境 1. 安装maven环境 1.1 下载 去网址http:// ...