社区
界面
帖子详情
求助关于CListCtrl采用虚拟列表后的刷新问题!!
alzq_zf
2008-09-22 06:29:06
各位老大,我在CListCtrl的子类对象中使用了虚拟列表的设置
对于虚拟列表的使用一切OK,但是问题出在对该控件进行大小调整时的控件刷新问题.
在对该控件进行大小调整时,虚拟列表会控制显示部分重新刷新,也就是数据会重新绘制.
这样导致的闪屏问题,该如何解决.
在该子类中,我对列表的进行了重绘.重绘代码是写在customdraw内的.
请问下,如何在这个子类中解决改变窗体大小时的闪屏问题...
...全文
824
15
打赏
收藏
求助关于CListCtrl采用虚拟列表后的刷新问题!!
各位老大,我在CListCtrl的子类对象中使用了虚拟列表的设置 对于虚拟列表的使用一切OK,但是问题出在对该控件进行大小调整时的控件刷新问题. 在对该控件进行大小调整时,虚拟列表会控制显示部分重新刷新,也就是数据会重新绘制. 这样导致的闪屏问题,该如何解决. 在该子类中,我对列表的进行了重绘.重绘代码是写在customdraw内的. 请问下,如何在这个子类中解决改变窗体大小时的闪屏问题...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Scatnow
2011-04-29
打赏
举报
回复
啥方法啊?贴出来啊!!!
alzq_zf
2008-09-27
打赏
举报
回复
自己找到方法了。。。暂时写概要设计……
smallfishff
2008-09-24
打赏
举报
回复
还不是很明白.你到到底是问虚列表还是DC?
还是虚列表显示DC数据?难道说你在LVN_GETDISPINFO处理中有DC绘制代码?
1.在需要1400*40000+以上DC时出现
这样的问题最有效的办法就是根据显示的部分读取相应的部分 DC大小就设置成显示的大小. 不可能一次性申请那么大内存来存DC数据.
2\在进行多个对象选取的时候如果数量过大导致响应非常慢...这个原因我有在customdraw中对需要绘制的ITEM有效性进行判断,不过一样卡...不知道什么原因
这是一个问题 在列表(无论是否虚列表)数据过大 非常大 全部选择的话会需要一段时间.不过 手动选择的话 你不可能一次性选择几万条 所以 是全选或代码循环选择很多记录的话 会卡. 没办法 你所需要的要求超范 什么总会有个低限的.
alzq_zf
2008-09-23
打赏
举报
回复
大哥们啊...顶上去 - -
alzq_zf
2008-09-23
打赏
举报
回复
如果不使用后台DC而直接进行DC绘制然后显示,这样会明显的有卡的现象,因为我制作的是缩略图类似的LIST,这样每显示一个页面时都要卡上0.几秒
alzq_zf
2008-09-23
打赏
举报
回复
同9楼...就是这个问题
我在后台建立一个memDC对显示数据进行存储.出现如下问题:
1\在改变大小等需要改变DC大小的时候有时候DC无法申请到足够内存还是什么原因导致无法建立DC,在需要1400*40000+以上DC时出现
2\在进行多个对象选取的时候如果数量过大导致响应非常慢...这个原因我有在customdraw中对需要绘制的ITEM有效性进行判断,不过一样卡...不知道什么原因
另外,这个memDC的显示我是直接调用getdc()显示的
teleinfor
2008-09-23
打赏
举报
回复
虚拟列表确实存在这个问题,普通的虚拟列表使用尤其在数据行数比较大时,闪烁的很是厉害.
我前段时间也使用虚拟列表进行数据库数据的显示,本来想达到快速无闪烁效果,结果发现不行.
虚拟列表被其他视图掩盖后,如果重新恢复需要重新进行绘制,导致闪烁厉害!还有就是滚动时候也会出现闪烁.
不知道各位大侠有否高见.
菜牛
2008-09-23
打赏
举报
回复
虚拟列表和自绘是两码子事儿哦,自绘的话可以用双缓冲减少闪烁,虚拟列表是通过响应LVN_GETDISPINFO消息来填充列表内容,和绘制没有关系。
alzq_zf
2008-09-23
打赏
举报
回复
你们的方法都试过的...
调整大小时使用的是setitemcountex我用的是VS2005
请问绘图代码会有什么问题
smallfishff
2008-09-23
打赏
举报
回复
是的哦 虚列表重绘你根本不会看见的 只会重读数据.在这个处理中不需要任何重绘代码.
你调整大小时是使用SetItemCount设置吗? 但也不会闪动 你可以先设置SetRedraw(FALSE)不过对于虚列表好像无效.
Sandrer
2008-09-22
打赏
举报
回复
虚拟列表本身不会闪,照你说的应该是你的绘图代码有问题
因为无论是否使用虚拟列表,你每次往ListCtrl中新增、插入、修改、删除一个项目,都会导致列表重画~
alzq_zf
2008-09-22
打赏
举报
回复
-o-大哥们...牛人们...help me
alzq_zf
2008-09-22
打赏
举报
回复
有尝试过自己定义一个memDC但是在窗口缩放的时候,需要对该DC大小进行更改
BITMAP对象好象无法动态更改大小,所以只能释放BITMAP后重新建立,然后重新绘制,这样会比较卡
同时在该类中进行的一些范围选择,例如鼠标拖拉等,明显的比不使用虚拟列表的ListCtrl慢很多.
为什么使用了虚拟列表以后反而导致了速度变慢
alzq_zf
2008-09-22
打赏
举报
回复
能说详细点么.这个memDC大概如何实现.
就我知道的,ListCtrl好象没有提供这个对象
吹泡泡的小猫
2008-09-22
打赏
举报
回复
使用memDC,很多软件都自己实现了一个CMemDC的类,可以避免闪烁
ListCtrl控件的滚动条拖动疑难杂症
用
虚拟
列表
,
刷新
的时候取的是你缓冲的数据,不改变
列表
数目,也就不存在滚动
问题
。你只要修改缓冲中的数据,不要直接修改
列表
。 能够请给一段代码,实在是没有写过类似代码的经验。 你可以把滚动条拖到某个位置,...
VC编程小技巧之
列表
框
1.
列表
框中标题栏(Column)的添加创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.然后在该List所在对话框的类(头文件)里创建
ClistCtrl
的一个...
积累的VC编程小技巧之
列表
框
1.
列表
框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None. 然后在该List所在对话框的类(头文件)里创建...
600个问与答
<怀疑编译器有
问题
>----C++关于new分配内存的讨论用 new DATA[1] 固然可以解决
问题
关键是为什么一定要用这个形式 (2006-06-04) v 为什么很多函数会有PASCAL标志 (2006-06-04) v 系统服务进程中...
Jiangsheng的CSDN Digest(March 4, 2006)
至于缓存,不需要加载所有的缩略图,使用后马上释放掉就可以了,利用双缓冲,绘制到一个内存DC上,
刷新
的时候再调取需要的缩略图 http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx 这个示例没有在...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章