CListCtrl的多行删除

来源:互联网 发布:异域狂想曲 知乎 编辑:程序博客网 时间:2024/05/19 00:09

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刷新




原创粉丝点击