1. 程式人生 > >Clistctrl多行刪除總結

Clistctrl多行刪除總結

CListCtrl選中行有兩種屬性情況,如果設定了Single Selection為TRUE,則只能單選,否則為多選(預設)。

方法一:

int CListCtrl::GetSelectionMark();

返回值:返回選中索引號,否則返回-1

說明:這個函式可以處理單行的情況,但是有一個缺點,它會保留你上次選中的項,所以當你單擊空白的地方時,還會返回上次選中的項。因此在使用快捷鍵實現刪除操作時需要注意這個情況,一般可以配合UINT GetItemState(int nItem,
UINT nMask) const;來判斷。

單行:int nItem = m_listCtrl.GetSelectionMark();
m_listCtrl.DeleteItem(nItem);

方法二:
此種方法完全錯誤!!!!!!!!!!!
說明:這個可以處理單行和多行(連續)的情況


POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
TRACE(_T("No items were selected!\n"));
}
else
{
while (pos)
{
int nItem = m_listCtrl.GetNextSelectedItem(pos);
m_listCtrl.DeleteItem(nItem);
// you could do your own processing on nItem here
}
}