updatedata(true ) :写入数据并将窗口控制变量写入内存)、更新数据)、使用OnOk时自动调用updatedata(true )、
用于将窗口数据写入内存中相应的成员变量
在UpdateData(flase ) :表示读取数据,即显示窗口读取存储器中的数据并实时显示--------oninitdialog中,MFC调用updatedata
(False )在对应的窗口中显示存储器成员数据
例如,CDialog的成员函数OnInitDialog ()
BOL cdialog :3360 oninitdialog () ) ) ) ) ) )。
{
//executedialogrt _ dlginitresource
BOOL bDlgInit;
if(m_lpdialoginit!=NULL )
bdlginit=executedlginit (m _ lpdialoginit;
else
bdlginit=executedlginit (m _ lpsz template name;
if (! bDlgInit )
{
trace(traceappmsg,0,' warning : executedlginitfailedduringdialoginit./n ';
结束诊断(-1;
返回假;
}
//transferdataintothedialogfrommembervariables
if (! 更新数据(false )
{
trace(traceappmsg,0,' warning : updatedatafailedduringdialoginit./n ';
结束诊断(-1;
返回假;
}
//enable/disablehelpbuttonautomatically
cwnd * phelpbutton=getdlgitem (id _ help );
if(phelpbutton!=NULL )
phelpbutton-show window (afxhelpenabled (? SW_SHOW : SW_HIDE;
返回真; //set focus to first one
}
CDialog:OnOK ()
void CDialog:OnOK (
{
if (! 更新数据(true ) )
{
trace(traceappmsg,0,' updatedatafailedduringdialogtermination./n ' );
//theupdatedataroutinewillsetfocustocorrectitem
返回;
}
结束日志(idok );
}
定义cwnd :更新数据(boolbsaveandvalidate )//更新数据函数
bool cwnd :更新数据(boolbsaveandvalidate ) )。
{
assert (:3360 is window (m _ hwnd ) ); //callingupdatedatabeforedomodal?
CDATAexchangedx(this,bSaveAndValidate;
//preventcontrolnotificationsfrombeingdispatchedduringupdatedata
_ afx _ thread _ state * pthread state=afxgetthreadstate (;
hwndhwndoldlockout=pthread state-m _ hlockoutnotifywindow;
assert(hwndoldlockout!=m_hWnd; //must not recurse
pthread state-m _ hlockoutnotifywindow=m _ hwnd;
BOOL bOK=FALSE;//资产故障
托里
{
dodataexchange(dx;
bOK=TRUE; //it worked
}
catch(cuserexception,e ) )。
{
//validation failed-useralreadyalerted,fall through
ASSERT (! bOK;
//Note: DELETE_EXCEPTION_(e ) not required
}
and_catch_all(e )为
{
//validationfailedduetoomorotherresourcefailure
e-reporterror (MB _ icon exclamation,AFX_IDP_INTERNAL_FAILURE );
ASSERT (! bOK;
elete_exception(e );
}
END_CATCH_ALL
phreadstate-m _ hlockoutnotifywindow=hwndoldlockout;
返回书;
}
所谓写入数据,是指将外部数据写入存储器变量(变更存储器数据)
读取数据是指显示窗口读取内存数据(不更改内存数据) )。
两者经常用于以下情况。
如果要设置窗口数据的默认值或将窗口数据作为控制参数传递到内存中,则必须将数据写入内存。 在这种情况下,首先调用updatadata(true )
写入后,需要观察内存这个数据的变化。 在这种情况下,必须始终读取内存数据。 在这种情况下,必须调用updatedata(false )
本文来自CSDN博客。 请注明出处。 http://blog.csdn.net/shuilan 0066/archive/2009/10/12/4658468.aspx