UpdateData() 是MFC的视窗函式,用来刷新数据的。
总的来说:作业系统会调用这个函式来初始化对话框中的数据,或者检索或者验证对话框中的数据。
简单说就是:如果UpdateData(TRUE) == 将控制项的值赋值给成员变数;UpdateData(FALSE) == 将成员变数的值赋值给控制项。
基本介绍
- 中文名:UpdateData
- 外文名:BOOL 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按钮,就不会调用该函式)