对话框主要有两类,分为模式和无模式,它们的功能都被封装在了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对话框和属性表的更多相关文章

  1. 【转】MFC 对话框Border属性设置(None、Thin、Resizing、Dialog Frame)

    对话框的Border属性对应的值设置 Dialog Frame WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPSIBLINGS | DS_MODALFRAME ...

  2. MFC中属性表单和向导对话框的使用

    每次在使用MFC创建一个框架时,需要一步步选择自己的程序的外观,基本功能等选项,最后MFC会生成一个基本的程序框架,这个就是向导对话框:而属性表单则是另外一种对话框,表单上有多个属性页,每点击某一页, ...

  3. MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

    前面讲了模态对话框和非模态对话框,本节来将一种特殊的对话框--属性页对话框. 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面 ...

  4. VS2010/MFC对话框一:创建对话框模板和修改对话框属性

    创建对话框主要分两大步: 第一,创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件: 第二,生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 创建 ...

  5. VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

    前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...

  6. VS2010/MFC对话框:一般属性页对话框的创建及显示

    一般属性页对话框的创建及显示 本节将介绍一般属性页对话框的创建和显示. 实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的.鸡啄米将上一节中的向导对话框进行少量修改,使其成为一般属性页对话 ...

  7. MFC对话框

    创建对话框步骤: 第一,创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件: 第二,生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 创建对话框类 ...

  8. VS2010/MFC对话框:向导对话框的创建及显示

    向导对话框的创建及显示 本节将为大家演示如何创建向导对话框. 仍然以前面的“加法计算器”的例子为基础,在其中加入向导对话框,我们可以用它来说明加法计算器的使用方法,一步一步引导用户操作,这也是比较常见 ...

  9. VS2010-MFC(对话框:属性页对话框及相关类的介绍)

    转自:http://www.jizhuomi.com/software/164.html 一 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过 ...

随机推荐

  1. SpringBoot集成RabbitMQ 从零到一,学会MQ异步和解耦--

    RabbitMQ 概念 RabbitMQ 即一个消息队列,_主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用._RabbitMQ使用的是AMQP协议,它是一种二进制协议.默认启 ...

  2. ztree实现中国省市区树形,可多选

    首先表 CREATE TABLE `sys_area` ( `id` INT(11) NOT NULL COMMENT '编号', `parent_id` INT(11) NOT NULL COMME ...

  3. break 和continue在循环中起到的作用

    break语句的作用是终止当前循环,跳出循环体.主意,break只能跳出一层循环. continue语句的作用是终止本轮循环并开始下一轮循环,(这里要主意的是在开始下一轮循环之前,会先测试循环条件). ...

  4. HTML5学习路线导航

    一.基本标签元素 1.基础标签第一篇 2.基础标签第二篇 3.表单form的使用 4.新增表单验证 二.CSS样式表 4.CSS插入样式表的三种格式 5.六大选择器 6.样式内容详细讲解 7.背景渐进 ...

  5. 数据库database

    1.创建数据库:create datebase financials create database if not exists financilas 2.查看数据库(所有):     show da ...

  6. python数据结构(二)------列表

    本文将重点梳理列表及列表操作. 2.1 list函数 2.2 基本列表操作 2.3 列表方法 2.1 list函数 >>>list('hello') ['h','e','l',l', ...

  7. docker服务各个模块

    docker容器官网:https://hub.docker.com/ 一.centos7.4中指定安装docker版本 1)默认yum源安装的docker版本为docker1.3.性能偏低,不支持k8 ...

  8. Django的MVT模式与MVC模式

    Django的MVT模式与MVC模式 在正式开始coding之前,我觉得有必要探讨下Django的MVT模式,理论和实践相结合,才能更好的掌握一门技术.Django中的MVT模式,Django就是属于 ...

  9. Mac os查看链接过的ssh key

    https://shipengliang.com/software-exp/mac-os-如何管理ssh-key.html

  10. hbase常用操纵操作——增删改查

    查询某个资金账户的信息 get 'dmp:hbase_tags','资金账号' 创建表 create 'emp', 'personal data', 'professional data' 在HBas ...