UpdateData

更新时间:2023-10-29 12:45

UpdateData() 是MFC窗口函数,用来刷新数据的。

函数说明

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按钮,就不会调用该函数)

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}