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

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


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

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

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

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

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

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

发布了4 篇原创文章 · 获赞 6 · 访问量 167

猜你喜欢

转载自blog.csdn.net/weixin_44533976/article/details/103979684
今日推荐