我原来是想用这个函数把我在编辑框中设置的字符显示出来,但是在这个函数实行的时候画面上的值都恢复为最初的值了!这是怎么回事!

解决方案 »

  1.   

    需要参数的,TRUE OR FALSE,函数的行为是不同的,建议遇到问题时先查msdn
      

  2.   

    UpdateData(TRUE); //刷新变量
      

  3.   

    变量-->显示:UpdateData(false);
    显示-->变量:UpdateData(true);
      

  4.   


    UpdateData(FALSE); //刷新界面
      

  5.   

    大家说得我都试验过了,还是不行!
    在画面上有几个radio,还有几个button和edit
    在button处理中我用了updatedata(true)和updatedata(false)这两个函数
    但是这个时候,在画面上的所有的radio的值都返回到初始值了,这是怎么回事阿?
      

  6.   

    同时调用updatedata(true)和updatedata(false)这两个函数 

    调用一个试试看
      

  7.   

    你如果要设置radio按钮的话 ,不要用什么UPDATEDATA()了,不是有个函数的嘛,
    好像是CheckRadioButton(firstID,LastID,要设置的ID),当然这几个要成组的;
    用文本框的话,直接用UpdateData(false)就可以了,把变量的值传给控件显示,
    如果还要用到控件的值的话,用UpdateData()就可以了,
    我怀疑你是不是程序中间搞错了,可不要把=喝==混淆起来哦,我以前犯过这样的低级错误,
      

  8.   

    对于控件的变量,一般来说有两种形式,一种是控件变量,一种是值变量,控件变量的赋值是直接对控件操作的,而值变量是通过DDX间接对控件操作的,这个时候就要频繁牵涉到
            BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
    这个函数,而这个函数的功能是双重的,由参数bSaveAndValidate决定。
    举个例子:编辑框控件IDC_EDIT的值变量为m_nEdit,窗口初始化后IDC_EDIT中没有任何数字,m_nEdit=0,突然某个时刻,程序对m_nEdit进行赋值:
            m_nEdit=3; 
    如果赋值之后调用
            UpdateData(FALSE);
    则控件IDC_EDIT会被赋上m_nEdit的值,出现字符串"3",反之,如果调用
            UpdateData(TRUE);
    则控件IDC_EIDT中的字符串不会改变,而m_nEdit会被赋为IDC_EDIT中的值。对于楼主的问题:
    在button处理中我用了updatedata(true)和updatedata(false)这两个函数 
    但是这个时候,在画面上的所有的radio的值都返回到初始值了
    很有可能在这两个语句之间对值变量进行了赋值,所以在UpdateData(FALSE)后改变了控件的状态。
      

  9.   

    谢谢大家了!
    我发现在其它的控件被点击过之后,没有及时的调用updatedata(ture)这个函数,也就是没有把这些值反映到控件对应的变量中去!~
    这个时候要是再调用函数,updatedata(false),那么就会使得他们返回到初始值!
    呵呵!
    谢谢大家了阿!