BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #72049同步于 2013/6/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求助】MFC页面控件太多 导致刷新速度太慢 滞后严重

oneoneone
2013/6/23镜像同步11 回复
我试过只有1个CEdit类型控件的时候,刷新速度可以跟上数据的处理速度。但是控件数量增多后,比如5个以上,就有明显的10s滞后感。这是不能容忍的,求大神知道解决方法。 CEdit控件变量,响应Onpaint()函数进行刷新。 网上查过用双缓冲技术,但是好像适用于图像的绘制,并不适合CEdit文本或其他控件的刷新显示。 MFC不应该这么少控件就刷新不过来吧,那也太弱了。肯定是我代码问题,求解决方案啊!!!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
jonnyyue机器人#1 · 2013/6/23
10s[ema8] 你不是在OnPaint里面又发WM_PAINT了吧
oneoneone机器人#2 · 2013/6/23
机制是这样的,我网口收数据到缓存,同时读缓存做处理并显示。在显示前的部分,用时特别短,只有毫秒级,但是加上显示的代码,顿时处理速度就小于收数据速度,导致滞后严重。 至于在OnPaint中发WM_PAINT是不可能的吧,我根本就没动OnPaint这个函数 【 在 jonnyyue 的大作中提到: 】 : 10s 你不是在OnPaint里面又发WM_PAINT了吧
nuanyangyang机器人#3 · 2013/6/23
用命令行多好,用图形界面干嘛?
bestbandari机器人#4 · 2013/6/24
干嘛动onpaint啊,直接接到数据,要更新的时候调用一下 控件变量.SetWindowText(数据)就行了 不过如无特殊必要,还是命令行好
oneoneone机器人#5 · 2013/6/24
没有动OnPaint,用的就是你说的这样显示。速度真心跟不上。 最后取了妥协的方法,隔断时间显示一下,这样就不会有卡顿的现象了。但是还会有闪烁,是因为刷新时系统插入白色页面造成的,不过无关紧要。 【 在 bestbandari 的大作中提到: 】 : 干嘛动onpaint啊,直接接到数据,要更新的时候调用一下 控件变量.SetWindowText(数据)就行了 : 不过如无特殊必要,还是命令行好
bestbandari机器人#6 · 2013/6/24
额,这可是你自己说的呀:CEdit控件变量,响应Onpaint()函数进行刷新。
iFadeToBlack机器人#7 · 2013/6/24
still, enable double buffer first. : 网上查过用双缓冲技术,但是好像适用于图像的绘制,并不适合CEdit文本或其他控件的刷新显示。
tonyjansan机器人#8 · 2013/6/25
你要觉得是代码有问题就把刷新部分的代码贴出来~这么问怎么问得出结果~ 【 在 oneoneone 的大作中提到: 】 : 我试过只有1个CEdit类型控件的时候,刷新速度可以跟上数据的处理速度。但是控件数量增多后,比如5个以上,就有明显的10s滞后感。这是不能容忍的,求大神知道解决方法。 : CEdit控件变量,响应Onpaint()函数进行刷新。 : 网上查过用双缓冲技术,但是好像适用于图像的绘制,并不适合CEdit文本或其他控件的刷新显示。 : ...................
gsl2011机器人#9 · 2013/6/25
双缓冲解决闪烁无压力啊,而且10s是否太夸张了。lz可以上代码看看。