CListCtrl的刷新问题

shengtwotwo 2016-10-19 09:52:43
我的刷新是数据刷新,有进度条的那种,有一部分进度条需要不停刷新。
1秒钟刷新10次的那种,或者两三次也行,1秒钟一次都行,但是累计可能一秒钟就要刷新上百次了,如果一秒钟刷新全部也行。问题是不要闪。
虚拟列表试了,他们可能是添加数据不闪吧,我一秒钟全部刷新一次也闪烁的厉害,不知道什么鬼,我还要继续测试下,修改,看看。怎么解决,memDC缓冲我不会啊,找资料也没比较系统的,问题是我怕有花很多时间搞,然后还是不行,谁有这方面的也推荐下。或者还有其他什么办法?
一个列表可能有几百行数据,然后刷新的行大概几十条,有一列是进度条。感觉懵逼,什么锁定窗口,锁定控件重绘,完全没用。求大神。分少,被采纳者给分。
...全文
517 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-03
  • 打赏
  • 举报
回复
引用 10 楼 u014770199 的回复:
[quote=引用 7 楼 zzz3265 的回复:] 每秒刷新几十上百次没什么意义, 你可以把要增加的数据先存起来, 定时合并刷新显示 用普通的方法, 往列表后面加数据也不会有任何闪烁
是没意义。进度条就是一秒刷新一次,但是数量多。刷新动作就多了。[/quote] 将间隔时间小于比如0.1秒的多次刷新动作合并为一次。
shengtwotwo 2016-11-03
  • 打赏
  • 举报
回复
引用 7 楼 zzz3265 的回复:
每秒刷新几十上百次没什么意义, 你可以把要增加的数据先存起来, 定时合并刷新显示 用普通的方法, 往列表后面加数据也不会有任何闪烁
是没意义。进度条就是一秒刷新一次,但是数量多。刷新动作就多了。
shengtwotwo 2016-11-03
  • 打赏
  • 举报
回复
引用 6 楼 u011330815 的回复:
把擦除背景的消息去掉: WM_ERASEBKGND的消息直接return TRUE; 另外再加上双缓冲: CDC * pDC = GetDC(); CDC MemDC; MemDC.CreateCompatibleDC(pDC); //先把内容绘制到MemDC中 //然后把MemDC绘制到pDC上 pDC.StretchBlt(0, 0, 100, 100, &MemDC, 0, 0, 100, 100, SRCCOPY); MemDC.DeleteDC(); pDC.DeleteDC();
恩,
shengtwotwo 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 hurryboylqs 的回复:
虚拟列表+双缓冲绘制上去,具体可以参考我写的一个小例子: http://download.csdn.NET/source/2668669 不会闪的
不要积分更好了。。。
Yofoo 2016-10-27
  • 打赏
  • 举报
回复
每秒刷新几十上百次没什么意义, 你可以把要增加的数据先存起来, 定时合并刷新显示 用普通的方法, 往列表后面加数据也不会有任何闪烁
你的OPPA 2016-10-27
  • 打赏
  • 举报
回复
把擦除背景的消息去掉: WM_ERASEBKGND的消息直接return TRUE; 另外再加上双缓冲: CDC * pDC = GetDC(); CDC MemDC; MemDC.CreateCompatibleDC(pDC); //先把内容绘制到MemDC中 //然后把MemDC绘制到pDC上 pDC.StretchBlt(0, 0, 100, 100, &MemDC, 0, 0, 100, 100, SRCCOPY); MemDC.DeleteDC(); pDC.DeleteDC();
  • 打赏
  • 举报
回复
可能我数据量小,闪烁问题不是严重,等某人提要求了我就采用前辈们的方法
hurryboylqs 2016-10-27
  • 打赏
  • 举报
回复
虚拟列表+双缓冲绘制上去,具体可以参考我写的一个小例子: http://download.csdn.NET/source/2668669 不会闪的
shengtwotwo 2016-10-27
  • 打赏
  • 举报
回复
这个我解决了一些吧,不过感觉还是略有点问题,用虚拟列表还是能够满足的,不过移动时闪烁,这个感觉还是要重写背景和绘制函数,除了这个,其他的就是指定刷新区域,比如控件,得到具体的区域,然后调用控件的区域刷新函数,让windows自动去刷新,这样目测是看不出来闪烁,只要刷新的区域不要进行太多操作,比如绘制进度条,写上进度百分比,还是略有点闪烁,不过还好吧。要求不高就可以这个。要求高,完全不闪的,我还没解决办法。
shengtwotwo 2016-10-20
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
用两个位置和大小完全一样的CListCtrl交替显示……?
哈哈,有创意。可以试试。
赵4老师 2016-10-19
  • 打赏
  • 举报
回复
用两个位置和大小完全一样的CListCtrl交替显示……?

15,979

社区成员

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

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