MFC界面:收数据的同时,某些控件不能输入用户自己的数值的解决办法

MFC界面:收数据的同时,某些控件不能输入用户自己的数值的解决办法


最近做项目,遇到了这样一个问题:程序中有三路RS422,当其中一路一直收数据时,界面就会不停的闪烁,并且界面上类似Combox或者CEdit控件输入不了值,只要用户输出数据界面立刻会刷新成之前初始化的值。
网上查找了许多办法,最后经过思考觉得应该是控件变量类型的问题;
众所周知,MFC控件变量有 值类型控件类型

control型变量可以获得控件的实例,通过这个变量,你可以操纵控件;
value型变量仅仅该控件关联的public型变量。

选择Value,MFC会把控件的内容对应到一个变量上。除非你用其他API取得这个控件进行操作,否则,就是一个变量而已,它主要的用途是UpdateData(),进行数据读写。

Control,就是把这个东西直接对应到了一个控件对象上去,比如CEdit对象。你可以直接用这个对象来进行操作。

所以当我们调用; UpdateData(FALSE); //可以向控件传递数据
UpdateData(TRUE); //可以从控件获得数据
界面就会不停地刷新,这种刷新会将界面上所有用到值类型的变量都进行刷新,所以我们的界面会不停的闪烁。其实不是我们想输入的值没有输入到界面上,而是刷新太快所以值被初始化了。

解决办法:
将所有值类型的控件变量删掉,重新定义为控件类型变量,通过调用GetStyle()或者GetWindowText()之类的函数进行复制或者取值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值