MFC-对话框类的数据交换和检验、添加变量

目录:D:\Cpp\Examples\学习C++的每一天\第7天10.28\Add

在程序运行界面中,用户往往会改变控件(编辑框)的属性。例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等。控件的属性改变后MFC会相应修改控件关联变量的值。

这种同步的改变是通过MFC为对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫做对话框的数据交换和检验机制。

主要用于 变量和控件输入的交换。

本例:实现两个数的加法计算。

step1:控制板上添加三个 Edit Contol ,ID分别设置为 IDC_Num1,IDC_Num2,IDC_Result.并添加其他控件

step2:给三个编辑框添加变量(编辑框中的数据可能会经常变化,有必要为它们每个控件关联一个变量),右键-添加变量-类别             Value-类型 double(int、float)(变量设置错误可以通过类向导进行修改)-变量名 m_Num1,m_Num2,m_Result (类的成员变量名一般以m_打头,以标识它是一个成员变量).

step3:双击编辑框,生成对应的函数,同时在CCalculat_upDlg.cpp中CCalculat_upDlg的DoDataExchange()函数的函数体中多了三条DDX_Text调用语句,如下图所示。

 

简单说明:如果我们在程序运行界面中输入加数1,则通过DoDataExchange()函数可以将输入的值保存到m_Num1变量中,反之如果程序运行中修改了变量m_Num1的值,则通过DoDataExchange()函数也可以将新的变量值显示到加数1的编辑框中。

但是这种数据交换机制中,DoDataExchange()并不是被自动调用的,而是需要我们在程序中调用CDialogEx::UpdateData()函数,由UpdateData()函数再去自动调用DoDataExchange()的。

CDialogEx::UpdateData()函数的原型为:

       BOOL UpdateData(BOOL bSaveAndValidate = TRUE);

       参数:bSaveAndValidate用于指示数据传输的方向,TRUE表示从控件传给变量,FALSE表示从变量传给控件。默认值是TRUE,即从控件传给变量。

       返回值:CDialogEx::UpdateData()函数的返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE。

应用如下:

void CAddDlg::OnBnClickedAdd()
{
	// TODO: 在此添加控件通知处理程序代码

	// 将各控件中的数据保存到相应的变量
	UpdateData(TRUE);
	//将两个数相加的和赋给 m_Result
	m_Result = m_Num1 + m_Num2;
	// 根据各变量的值更新相应的控件。和的编辑框会显示m_Result的值 
	UpdateData(FALSE);
}

在控制面板的编辑框里输入 2 + 5 ,点“计算”按钮后产生点击消息,从而调用OnBnClickedAdd()函数。

进入此函数后,首先由UpdateData(TRUE)函数将被加数的值2和加数的值5分别保存到变量m_Num和m_Num2中,然后通过语句m_Result = m_Num1 + m_Num2;计算出和为7,并把7赋值给m_Result。最后调用UpdateData(FALSE)根据被加数、加数、和的值更新三个编辑框的显示值,就得到了上图中的结果。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值