文章目录
- 四、 为对话框中的控件添加变量
- 五、对话框类的
- 5.1 为编辑框添加变量
面步骤中 为对话框添加了几个控件,包括三个静态文本框,三个编辑框,一个按钮控件。
四、 为对话框中的控件添加变量
编辑框中的数据可能会经常变化,有必要为它们每个控件关联一个变量。
首先为被加数的编辑框 IDC_SUMMAND_EDIT 添加变量。
- 在编辑框上点右键,在右键菜单中选择“Add Variable”。弹出添加成员变量的向导对话框。
2 .我们想为其添加值变量而不是控件变量,所以对话框中“Category”下的组合框中选择Value。
-
“Variable type”下的组合框此时默认选中的是“CString”,CString是字符串类,显然不能进行加法运算。我们可以选择double、float、int等。这里我们选择double,即编辑框关联一个double类型的变量。
-
在“Variable name”中写入自定义的变量名。为其取名m_editSummand。
5.点“Finish”完成。
注意,类的成员变量名一般以m_打头,以标识它是一个成员变量。
参照此方法,再分别为加数的编辑框IDD_ADDEND_EDIT添加double型变量m_editAddend、和的编辑框IDD_SUM_EDIT添加double型变量m_editSum。
添加完成后,可以再 **Dlg.h头文件中看到,刚才添加的三个变量;
**Dlg.cpp文件中可以看到CAdditionDlg()函数中U盾哦了三个变量的并初始化。
**Dlg.cpp文件中可以看到:DoDataExchange()函数的函数体中多了三条DDX_Text调用语句,用于数据交换。
五、对话框类的
在程序运行界面中,用户往往会改变控件的属性,例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等。控件的属性改变后MFC会相应修改控件关联变量的值。这种同步的改变是通过MFC为对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫做对话框的数据交换和检验机制。
5.1 为编辑框添加变量
我们为三个编辑框添加了变量以后,在AdditionDlg.cpp 中 CAdditionDlg 的 DoDataExchange()函数的函数体中多了三条DDX_Text调用语句。下面是函数体代码和添加的注释。
再以 Addition 程序为例简单说下数据交换机制。如果我们在程序运行界面中输入被加数,则通过CAddition的DoDataExchange()函数可以将输入的值保存到 m_editSummand 变量中,反之如果程序运行中修改了变量 m_editSummand 的值,则通过 CAddition 的 DoDataExchange() 函数也可以将新的变量值显示到被加数的编辑框中。
但是这种数据交换机制中,DoDataExchange() 并不是被自动调用的,而是需要我们在程序中调用 CDialogEx::UpdateData()函数,由 UpdateData() 函数再去自动调用 DoDataExchange()的。
CDialogEx::UpdateData() 函数的原型为: BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
参数:bSaveAndValidate 用于指示数据传输的方向,TRUE 表示从 控件 传给 变量,FALSE 表示从 变量 传给 控件。默认值是 TRUE,即从 控件 传给 变量。
UpdateData(true);//把编辑框中的数值传到m_editSummand中,括号内缺省值为true
UpdateData(false);//把m_editSummand的值传递到编辑框中并显示
返回值:CDialogEx::UpdateData()函数的返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE。
在下一讲中将具体演示CDialogEx::UpdateData()函数如何使用。
本节主要讲的是新建对话框类和添加控件变量,控件的消息处理函数将在下一讲详细介绍。