一、http://topic.csdn.net/t/20020728/13/905888.html
ListView在操作大量数据时慢的问题! (CSDN-CSDN社区-C++ Builder-基础类) :
--> 26楼 max_wzg (暴走-银狼) :
采用常规方法处理ListView,在数据量大时无论是还是用了BeginUpdata和EndUpdata()还是处理WM_EraseBkgnd信息都不会得到理想的效果,那答案是什么呢?
嗯,采用所谓Virtual ListView。
说起来很神秘,其实点通了很简单。
在于把ListView-> OwnerData设为true,然后直接设置
ListView-> Items-> Count为数据总数,实际的数据可以保在任意其它速度较快且可直接索引的容器里(如STL中的vector),然后关键是在OnData事件中写入代码通过Item-> Index从容器中(如vector)取出数据,然后用
Item-> Caption = ???;
Item-> SubItems-> Add(???);
Item-> SubItems-> Add(???);
来动态的写入数据到ListView用于UI显示,如此Virtual ListView即完成.
一个完整的简单例子如下: