ListView控件在添加大量数据时速度很慢而且会频繁刷新以至于窗口不断闪烁,总之是没法用啦,这种情况把控件改成虚拟列表的形式就能解决这个问题。

虚拟列表不在控件中存储数据,而是向外部“索要”数据,即数据是由我们自己维护的,它唯一保存的数据是控件中项目的数量。虚拟列表通过 LVN_GETDISPINFO、LVN_ODFINDITEM和LVN_ODCACHEHINT这三个消息与外界交互。

创建虚拟列表控件

使用CreateWindows(Ex)创建控件时加上 LVS_OWNERDATA 样式,这样创建的就是一个虚拟列表了。注意,虚拟列表样式只能在创建时指定而无法在创建后添加或移除。