加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 100万行ListView

发布时间:2020-12-14 02:18:16 所属栏目:Windows 来源:网络整理
导读:我有一个SysListView32应该可能拥有数百万行,并且三列文本A,B,C各自 256个字符. 假设列B有很多次重复(例如:列A是文件名,列B是路径,每行是文件系统的文件),并且只有100k不同的值(而不是几百万). 是否可以避免ListView GUI元素的B列内容的RAM重复? 我们可以
我有一个SysListView32应该可能拥有数百万行,并且三列文本A,B,C各自< 256个字符. 假设列B有很多次重复(例如:列A是文件名,列B是路径,每行是文件系统的文件),并且只有100k不同的值(而不是几百万). 是否可以避免ListView GUI元素的B列内容的RAM重复? 我们可以只用指向数组元素的指针填充ListView(取自B列不同值的100k元素数组),而不是重复数据吗? 如何修改它以使其工作?

LV_ITEM item;
item.mask = LVIF_TEXT;
item.pszText = "Hello";
...
ListView_SetItem(hList,&item);

解决方法

您需要的还称为“虚拟列表”.虚拟列表控件是具有LVS_OWNERDATA样式的列表视图控件.此样式使控件能够支持最多DWORD项目(默认项目计数仅扩展为int).但是,这种风格提供的最大优势是能够在任何时候只在内存中包含一部分数据项.这允许虚拟列表视图控件适合与大型信息数据库一起使用,其中已经存在访问数据的特定方法.对于给定的数据集(列表或动态数组),您需要执行以下步骤:

>将LVS_OWNERDATA样式添加到ListView
>调用CListCtrl :: SetItemCount传递数据源大小,如std :: vector :: size().
>捕获LVN_GETDISPINFO通知.这是将数据呈现到ListCtrl的位置.

请查看我添加的附加链接,了解更多信息和示例代码.如果使用CListView,则可以使用GetListCtrl访问CListCtrl.

链接:

Virtual List Controls

Using virtual lists

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读