1.普通ListCtrl和虚拟列表都可以采用下面的方式删除多行
int nSelItem = listctrl.GetNextItem(-1,LVNI_SELECTED);
while (nSelItem != -1)
{
listctrl.DeleteItem(nSelItem);
nSelItem = listctrl.GetNextItem(-1,LVNI_SELECTED);
}
2.但是,在删除过程中,获取行数据,如下
int nSelItem = listctrl.GetNextItem(-1,LVNI_SELECTED);
while (nSelItem != -1)
{
CString str = listCtrl.GetItemText(nSelItem,1);
outputdebugstring(str);//
listctrl.DeleteItem(nSelItem);
nSelItem = listctrl.GetNextItem(-1,LVNI_SELECTED);
}
普通列表,获取str是没有问题的。
但是,虚拟列表,获取到的str是不正确的,不能这样用,要刷新列表,应该用SetItemCount刷新