更新时间:2023-10-29 12:45
UpdateData() 是MFC的窗口函数,用来刷新数据的。
总的来说:操作系统会调用这个函数来初始化对话框中的数据,或者检索或者验证对话框中的数据。
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
参数说明
bSaveAndValidate:标明那对话框是初始化(FALSE)还是数据恢复(TRUE)。
UpdateData()参数只有一个,默认为TRUE。
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) == 将成员变量的值赋值给控件,将数据从窗口显示。
实例说明:
例如我们在对话框窗口中添加了3个editbox,然后将前两个的值相加,然后在第三个editbox中输出。
那么我们可以做如下处理:
1。用类向导在3个editbox下添加3个变量,我们命名为m_num1,m_num2,m_num3。
2。然后我们可以多添加一个button控件,在其的click处理事件中,添加以下代码:
UpdateData();// 默认的缺省参数为TRUE,这样,将EditBox控件的内容读入到与其关联的变量中
m_num3 = m_num1+m_num2;
UpdateData(FALSE);// 将变量的值,输出到与其关联的EditBox中
就可以了
bool类的函数,如果,所需数据设定了范围。
合法返回1,否则返回0
函数使用注意点:
当你使用UpdateData()函数的时候,你要清楚一个重要的点,那就是它的范围是你调用它的类所代表的框架中生效。举个例子:我们有一个主对话框,然后在其中建立了三个标签页。三个标签页分别关联了三个类。那么我们要在主对话框中使用标签页中关联了一个编辑框的变量时,如果你使用UpdateData(false)的时候,你会发现没有效果。你必须用标签页的类如CPage0 page0; page0.UpdateData(false);才会达到你的目的。
注意:1.用于数据交换的DoDataExchange函数是不能被直接调用的,必须通过调用UpdateData()函数来调用DoDataExchange函数。所以在用到控件与关联的成员变量交换数据时,要首先调用UpdateData()函数。
2.当模态对话框被创建时,在OnInitialDialog()函数里framework自动的调用UpdateData(FALSE)。该函数的调用在对话框出现之前。而且在默认的接口函数OnOk()里也调用了该函数UpdateData(TRUE)来获取数据,如果调用成功,将会关闭对话框。(如果单击Cancel按钮,就不会调用该函数)