文章标签 ‘VirtualTree技术’
自己重新构造头
你使用VirtualTree技术
如何用TListView来处理大量数据
采用常规方法处理ListView,在数据量大时无论是还是用了BeginUpdata和EndUpdata()
还是处理WM_EraseBkgnd信息都不会得到理想的效果,那答案是什么呢?嗯,
采用所谓Virtual ListView技术。说起来很神秘,其实点通了很简单。
通常ListView中的所有数据都是由ListView自己来管理的,它负责这些数据空间的分配和释放,
当你把ListView->OwnerData设为true时,ListView就把数据的管理权交给了你,而它只负责显示。
这时你需要自己来为数据分配和释放空间,至于你怎样来管理这些数据完全有你自己来定,
ListView完全不关心,当ListView需要显示某条数据时,它就调用OnData事件,
你只要在这个事件的处理函数里指定ListView即将显示的Item的内容就可以了。
这就是所谓的Virtual ListView技术。
由于ListView对数据管理的功能强大,随之而来的却是效率低下,
如果你采用更高效的数据管理方式就会极大的改变效率。
而且Virtual ListView只在数据需要显示时才调用OnData事件载入数据,所以速度很快。
下面的例子中,假设ListView中需要显示4列数据,所有的数据被保存在vector里。
/*Unit1.h*/ [...]
