在windows程序开发中,如果使用了List显示数据,但是目标数据量很大,List性能就会变得很慢,刷新一次需要几秒甚至几十秒的时间,若解决此问题,可使用VirtualList技术 - 即带LVS_OWNERDATA样式的List control。
1、创建
创建时指定LVS_OWNERDATA样式,即在调用CreateWindow或CreateWindowEx时指定。
注:1)不支持动态切换到LVS_OWNERDATA样式,因此通过SetWindowLong等设置该样式将是失败的;
2)本样式不可与LVS_SORTASCENDING或LVS_SORTDESCENDING风格组合,所有的virtual list使用默认的LVS_AUTOARRANGE样式。
2、兼容性问题
1)四种形式的List均支持LVS_OWNERDATA,使用本样式的list不存储条目信息。因此可以应用的有效的状态信息只有LVIS_SELECTED和LVIS_FOCUSED。Virtual list 也不会为每一个条目保持状态和覆盖的图像,然而virtual list可以向父窗口发送一个LVM_SETCALLBACKMASK消息来查询这些图像。
2)受影响消息:
Message |
限制描述 |
LVM_ARRANGE |
不支持LVA_SNAPTOGRID样式 |
LVM_DELETEALLITEMS |
设置条目个数为0并清除所有内部选集变量,但是并不是实际地删除所有条目&# |