转自:http://blog.csdn.net/ywlshr/archive/2009/07/23/4373656.aspx

UpdateData,顾名思义,是用来刷新数据的。
  UpdateData(TRUE) -- 刷新控件的值到对应的变量
  UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1,m_usercode);将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);
  简单的说,如果Updatedata(TRUE) == 将控件的值赋值给成员变量;

  Updatedata(FALSE) == 将成员变量的值赋值给控件;

//////////////////////////////////////

如果你为控件分配了变量
UpdateData(true)
是使用户输入的数据能够反映到变量上
在函数调用之后变量才被赋值

UpdateData(false)
是当你给控件对应的变量赋过值之后,在控件上体现出来
在函数调用之前,控件的值是不会随变量变化的

一、总结UpdateData()函数

UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。

UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。

      当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。  

二、关于编辑框的赋值和取值

向编辑框中赋值和取值时:

1、建一个 控制型的变量,如m_edit1,用CWnd的SetWindowText() 和GetWindowText()来赋值和取值。

m_Edit1.SetWindowText("Hello");  

或者GetDlgItem(IDC_EDIT1)->SetWindowText(str);

2、建立一个控制型的变量,如m_edit1,用SetDlgItemText()和GetDlgItemText()来赋值和取值

CString Str="Hello":

m_edit1.SetDlgItemText(IDC_EDIT1,str);

2、直接建一个   数值形的变量   如m_strEdit;   用  UpdateData()来控制得到变量,还是更新变量。

//取值  
  UpdateData(TRUE);  
  CString   buf   =   m_Edit1;   
  
  //赋值  
  m_Edit1="ok!";  
  UpdateData(FALSE);

posted on 2010-11-08 12:21  TsingCai  阅读(750)  评论(0编辑  收藏  举报