关于对在对话框中提取值的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/17 08:13:20
我知道要对对话框提取值的时候首先要用到UPDADEDADA函数对变量进行更新!但是我看到一本书它直接就是用 一个对话框的对象,如:(dlg.与对话框关联的变量)这样就可以提取到对话框的值,这是为什么呢?不是一定要用UPDADEDADA函数对变量进行更新才能提取到对话框的值吗???
但是我试多在其他的类里面,不用UPDATEDATA(TURE),直接用(对话框对象.成员变量)也可以提取到对话框中已修改的值!

对话框提取值不止一种
UpdateData是一个

GetDlgItemText()
_ttoi()
也是一种方法

不如一个EDIT控件ID是IDC_EDIT1
输入12
可以这样

CString s = _T("") ;
GetDlgItemText( IDC_EDIT1 , s ) ;
//这时s = "12"
INT iVal = _ttoi( s ) ;
//这时 iVal=12

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

简单的说 UpdateData(bsave) 用于 对话框和变量 之间的更新。

bsave = 0 时,把变量更新到对话框界面
bsave = 1 时,对话框 更新到 变量。

如果 对话框和变量都没有改变,那就没有必要updatedata了。
可以直接 dlg.membervar 的方式使用 没有问题。

-------------------------------------------------------------
回答补充:“对话框的值当然要变拉!”
比如 界面中一个控件对应变量a=1;
你手工在对话框中输入修改为2,(我指的是界面中现实2,但其实变量a现在还是1)
这时候程序中在处理时候 就需要 updatadata(1)一下。

反过来也是 :如果程序操作修改了a的值,但现在界面中对应的控件其实还没有变。因此也需要 updatedata(0) 一下。

如果 这个变量a 没有用到或者有其他情况,当然也就没有更新了。

如果还没明白,做个实例 调试一下就全清楚了。

dlg.**是这个对话框类里的成员变量,你要先申请一个对话框类,在这个类里申明变量,再与控件关联才可以