工程:vs2015 mfc,32位程序
系统:win7 64bit
电脑内存:8GB
写了一个小工具,把读取的文件内容显示在一个CListView中,显示的格式和UE差不多:左侧一列显示该行的开始偏移量,然后16列显示16个字节,再一列显示这16个字节的字符(这部分没有UE智能,每个字符单独显示,而没有把“汉字”显示成一个),最后一列显示一些简单的说明(只有少数行会有这个说明,每个说明最大不超过10个字)
通常读取文件都是没有问题的,今天读了一个大约1.7GB的文件,结果内容显示不出来了。跟踪发现CListView设置项数时失败:
GetListCtrl().SetItemCount((int)m_lCountGroup);
行数m_lCountGroup有1.07亿+条,注意此CListView已经使用了虚拟列表,所以这里只设置数量即可。
后去csdn上查看,说虚拟列表应该使用Ex的接口,所以修改如下:
GetListCtrl().SetItemCountEx((int)m_lCountGroup);
其第二个参数使用默认值。这个接口会有个返回值,表示成功还是失败,这就比较容易了,通过反复试验,发现行数不超过1亿时就成功,而一旦超过(即使只超过1条)就失败。
今天终于清楚CListCtrl最大可以容纳的行数了。
不过不知道像UE这类工具是如何显示超过1亿行数据的,有了解的说说看