有关UpdateData函数的疑问!

zshtiger2414 2008-07-10 04:12:02
我原来是想用这个函数把我在编辑框中设置的字符显示出来,但是在这个函数实行的时候画面上的值都恢复为最初的值了!这是怎么回事!
...全文
180 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
destinycncn 2008-07-12
  • 打赏
  • 举报
回复
lz分给的很均匀啊 呵呵~!加油学习!
zshtiger2414 2008-07-11
  • 打赏
  • 举报
回复
谢谢大家了!
我发现在其它的控件被点击过之后,没有及时的调用updatedata(ture)这个函数,也就是没有把这些值反映到控件对应的变量中去!~
这个时候要是再调用函数,updatedata(false),那么就会使得他们返回到初始值!
呵呵!
谢谢大家了阿!
M_S_D_N 2008-07-11
  • 打赏
  • 举报
回复
对于控件的变量,一般来说有两种形式,一种是控件变量,一种是值变量,控件变量的赋值是直接对控件操作的,而值变量是通过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)后改变了控件的状态。
destinycncn 2008-07-10
  • 打赏
  • 举报
回复
不论什么类型的变量,能初始化尽量初始化!
go_go_vip 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shengliz 的回复:]
你如果要设置radio按钮的话 ,不要用什么UPDATEDATA()了,不是有个函数的嘛,
好像是CheckRadioButton(firstID,LastID,要设置的ID),当然这几个要成组的;
用文本框的话,直接用UpdateData(false)就可以了,把变量的值传给控件显示,
如果还要用到控件的值的话,用UpdateData()就可以了,
我怀疑你是不是程序中间搞错了,可不要把=喝==混淆起来哦,我以前犯过这样的低级错误,
[/Quote]
支持
羽毛乱发 2008-07-10
  • 打赏
  • 举报
回复
你如果要设置radio按钮的话 ,不要用什么UPDATEDATA()了,不是有个函数的嘛,
好像是CheckRadioButton(firstID,LastID,要设置的ID),当然这几个要成组的;
用文本框的话,直接用UpdateData(false)就可以了,把变量的值传给控件显示,
如果还要用到控件的值的话,用UpdateData()就可以了,
我怀疑你是不是程序中间搞错了,可不要把=喝==混淆起来哦,我以前犯过这样的低级错误,
KK32073307 2008-07-10
  • 打赏
  • 举报
回复
说的再清楚一点,你是在编辑框里设置值然后在哪儿显示啊?
fqli1610 2008-07-10
  • 打赏
  • 举报
回复
同时调用updatedata(true)和updatedata(false)这两个函数

调用一个试试看
zshtiger2414 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 linglongyouzhi 的回复:]
你没有给他们赋值
引用 6 楼 zshtiger2414 的回复:
大家说得我都试验过了,还是不行!
在画面上有几个radio,还有几个button和edit
在button处理中我用了updatedata(true)和updatedata(false)这两个函数
但是这个时候,在画面上的所有的radio的值都返回到初始值了,这是怎么回事阿?
[/Quote]

我给edit框子赋值了!
linglongyouzhi 2008-07-10
  • 打赏
  • 举报
回复
你没有给他们赋值
[Quote=引用 6 楼 zshtiger2414 的回复:]
大家说得我都试验过了,还是不行!
在画面上有几个radio,还有几个button和edit
在button处理中我用了updatedata(true)和updatedata(false)这两个函数
但是这个时候,在画面上的所有的radio的值都返回到初始值了,这是怎么回事阿?
[/Quote]
zshtiger2414 2008-07-10
  • 打赏
  • 举报
回复
大家说得我都试验过了,还是不行!
在画面上有几个radio,还有几个button和edit
在button处理中我用了updatedata(true)和updatedata(false)这两个函数
但是这个时候,在画面上的所有的radio的值都返回到初始值了,这是怎么回事阿?
qt_freelancer 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sevendog 的回复:]
UpdateData(TRUE); //刷新变量
[/Quote]

UpdateData(FALSE); //刷新界面
hua_yang 2008-07-10
  • 打赏
  • 举报
回复
变量-->显示:UpdateData(false);
显示-->变量:UpdateData(true);
sevendog 2008-07-10
  • 打赏
  • 举报
回复
先把变量刷新了就可以了
sevendog 2008-07-10
  • 打赏
  • 举报
回复
UpdateData(TRUE); //刷新变量
linglongyouzhi 2008-07-10
  • 打赏
  • 举报
回复
需要参数的,TRUE OR FALSE,函数的行为是不同的,建议遇到问题时先查msdn

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧