bug1:多次填充数据,ListCtrl无法正确更新的bug
bug复现:
CListCtrl同时使用了LVS_OWNERDATA和NM_CUSTOMDRAW风格。
第一次添加数据
for(int i = 0; i < 10000; i++)
m_vecCustom.pushback(Custom);
SetItemCount(10000);
EnsureVisible(nCount - 1, TRUE);
第二次添加数据
m_vecCustom.Clear();
for(int i = 0; i < 10000; i++)
m_vecCustom.pushback(Custom);
SetItemCount(10);
EnsureVisible(nCount - 1, TRUE);
这次添加的数据在控件中无法正常显示。
解决办法:
既要释放我们自己添加的数据m_vecCustom,也要释放控件自己分配的数据DeleteAllItems();
在第二次添加数据前先释放CListCtrl中的数据
m_vecCustom.Clear();
DeleteAllItems();//加上这一句就解决了
for(int i = 0; i < 10000; i++)
m_vecCustom.pushback(Custom);
SetItemCount(10);
EnsureVisible(nCount - 1, TRUE);