mfc list control怎么显示大量数据

动感小麦兜 2018-07-13 02:42:01
如果单纯的使用InsertItem、SetItemText来显示数据,是比较耗费时间的,尝试过单独开一个线程来显示数据,结果也不太理想,往往数据接收完后要过好几秒软件才能显示完,有明显的延时。后来试了虚拟列表,但虚拟列表好像需要一个大的buff数组,不想在程序里用这么大一个数组,而且虚拟列表好像不能自动往下滚动(可能是方法不对)。现在想要1秒用list control显示1000行数据,而且能自动往下滚动的,就像下图这个软件一样(用的应该也是list control),想请教大神还有什么方法吗?


...全文
709 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2018-07-14
  • 打赏
  • 举报
回复
虚拟列表 要快 几十 倍 , 可以 滚动 。
动感小麦兜 2018-07-14
  • 打赏
  • 举报
回复
现在采用了虚拟列表方式,确实比较快。但向下滚动还是比较占时间,索性改成了1秒滚动一次,这样就好些了。
动感小麦兜 2018-07-14
  • 打赏
  • 举报
回复
现在只想要用list control控件1秒显示1000个数据且不延迟,而且能自动滚动那种,一直没找到合适的
schlafenhamster 2018-07-14
  • 打赏
  • 举报
回复
应该 用 m_List.EnsureVisible
孤客天涯 2018-07-14
  • 打赏
  • 举报
回复
用虚模式就可以了,百万级轻松搞定
动感小麦兜 2018-07-14
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
虚拟列表 要快 几十 倍 , 可以 滚动 。

请问怎么滚动,用m_List.EnsureVisible(m_List.GetItemCount()-1,FALSE);这种吗?
还是m_List.SendMessage(WM_VSCROLL, SB_BOTTOM, NULL);
schlafenhamster 2018-07-13
  • 打赏
  • 举报
回复
大量 处理时 , 先 LockWindowUpdate 再 UnlockWindowUpdate();
oblivi 2018-07-13
  • 打赏
  • 举报
回复
	m_list.SetRedraw(FALSE);
do ............
m_list.SetRedraw(TRUE);

你可以开启一个线程来进行加载,比如你一页可以显示200条,先显示这200条,剩下的用一个线程来加载

15,979

社区成员

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

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