MFC——对话框(一)
2016-05-24 21:48
344 查看
创建对话框主要分两大步:
1、创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;
2、生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。
一、对话框类的数据交换和检验
在程序运行界面中,用户往往会改变控件的属性,例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等。控件的属性改变后MFC会相应的修改控件关联变量的值。这种同步的改变是通过MFC对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫做对话框的数据交换和检验机制。
如下:
我们可以看到,在CAdditionDlg类中的DaDataExchange()函数里,
ID为IDC_SUMMAND_EDIT的控件与变量m_editSummand关联在一起,彼此可以进行数据交换,
同样,IDC_ADDEND_EDIT的控件与m_editAddend变量关联,IDC_SUM_EDIT控件与m_editSum变量关联。
但是,这种数据交换机制中,DoDataExchange()并不是被自动调用的,而是需要我们在程序中调用CDialogEx::UpdateData()函数,由UpdateData()函数再去自动调用DoDataExchange()
CDialogEx::UpdateData()函数的原型为:
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
参数bSaveAndValidate用于指示数据传输的方向。
UpdateData(TRUE)时,是由控件传给变量;
UpdateData(FALSE)时,是由变量传给控件。
返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE
二、为控件添加消息处理函数
双击按钮(或者在按钮上点右键,选择‘Add Event Handler...’),MFC会自动为其在类中添加BN_CLICKED消息的处理函数OnBnClickedAddButton()
如下例:
UpdateData(TRUE),作用是将控件中数据保存至变量
m_editSum = m_editSummand + m_editAddend; 进行加法运算
UpdateData(FALSE),作用是将变量值更新至控件
1、创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;
2、生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。
一、对话框类的数据交换和检验
在程序运行界面中,用户往往会改变控件的属性,例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等。控件的属性改变后MFC会相应的修改控件关联变量的值。这种同步的改变是通过MFC对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫做对话框的数据交换和检验机制。
如下:
void CAdditionDlg::DoDataExchange(CDataExchange* pDX) { // 处理MFC默认的数据交换 CDialogEx::DoDataExchange(pDX); // 处理控件IDC_SUMMAND_EDIT和变量m_editSummand之间的数据交换 DDX_Text(pDX, IDC_SUMMAND_EDIT, m_editSummand); // 处理控件IDC_ADDEND_EDIT和变量m_editAddend之间的数据交换 DDX_Text(pDX, IDC_ADDEND_EDIT, m_editAddend); // 处理控件IDC_SUM_EDIT和变量m_editSum之间的数据交换 DDX_Text(pDX, IDC_SUM_EDIT, m_editSum); }
我们可以看到,在CAdditionDlg类中的DaDataExchange()函数里,
ID为IDC_SUMMAND_EDIT的控件与变量m_editSummand关联在一起,彼此可以进行数据交换,
同样,IDC_ADDEND_EDIT的控件与m_editAddend变量关联,IDC_SUM_EDIT控件与m_editSum变量关联。
但是,这种数据交换机制中,DoDataExchange()并不是被自动调用的,而是需要我们在程序中调用CDialogEx::UpdateData()函数,由UpdateData()函数再去自动调用DoDataExchange()
CDialogEx::UpdateData()函数的原型为:
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
参数bSaveAndValidate用于指示数据传输的方向。
UpdateData(TRUE)时,是由控件传给变量;
UpdateData(FALSE)时,是由变量传给控件。
返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE
二、为控件添加消息处理函数
双击按钮(或者在按钮上点右键,选择‘Add Event Handler...’),MFC会自动为其在类中添加BN_CLICKED消息的处理函数OnBnClickedAddButton()
如下例:
void CAdditionDlg::OnBnClickedAddButton() { // TODO: Add your control notification handler code here // 将各控件中的数据保存到相应的变量 UpdateData(TRUE); // 将被加数和加数的加和赋值给m_editSum m_editSum = m_editSummand + m_editAddend; // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值 UpdateData(FALSE); }
UpdateData(TRUE),作用是将控件中数据保存至变量
m_editSum = m_editSummand + m_editAddend; 进行加法运算
UpdateData(FALSE),作用是将变量值更新至控件
相关文章推荐
- Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系
- 给Button设置圆角
- android开发---音乐播放器的简单播放
- [Linux] Nutch 2.3.1+ Hbase + Hadoop + Solr 单机指南(三)
- Spark Checkpoint读操作代码分析
- 【Leetcode】:9. Palindrome Number 问题 in JAVA
- 配置文件解析利器-Config库
- 第十章 存储过程和函数
- Spark Streaming源码解读之Executor容错安全性
- 两种项目中可用的单例模式
- ubuntu16.04中文乱码解决方案
- BNF语音识别文件格式简介
- 实习入职第五天:Android开发之Intent.Action
- 在eclipse中运行maven项目报错
- HDU 2577
- hdu 3037 Saving Beans (大组合数取模--Lucas定理)
- 共同学习Java源代码--数据结构--ArrayList类(五)
- HTTP协议详解
- 第九章 Mysql函数
- vs打开低版本的工程报错