2008年5月28日 星期三

MFC中的List Control如何刪除Item

在List Control裡面要移除一個想要刪除的Item

  1. 可以在加入LVITEM Item時, 設定lParam這個變數, 在找尋Item的時候就可以用GetItemData取出這個Item的IParam值, 根據IParam來判斷是否為想要刪除的Item.
  2. 如果Item裡面有獨一無二的值, 也可以直接取出pszText來判斷. 利用GetItemText(Item_num, SubItem_num)來取得. SubItem_num是指在這個Item裡面的第幾個欄位.


for (int nItem = 0; nItem < m_lServerList.GetItemCount(); )
{
// if (m_lServerList.GetItemState(nItem, LVIS_SELECTED) == LVIS_SELECTED)
// m_lServerList.DeleteItem(nItem);
CString text;
if(text = m_lServerList.GetItemText(nItem,0) == "Delete Item")
m_lServerList.DeleteItem(nItem);
else
++nItem;
}

上面的code是先利用GetItemCount取得這個List Control總共有多少Item. 再重頭走過這些Item, 取出這些Item的第一個欄位(欄位0), 如果欄位的值為"Delete Item"這個字串的話, 就把這個Item刪除.
要注意的地方在於++nItem只有在沒有執行刪除的時候做, 因為如果進行刪除動作以後, 所有的Item都會被往後移動一個位子, 因此不需要++nItem.

而註解的地方則是如果一想要在這個Item被選取的時候刪除的做法.


參考資料 :
http://www.codeguru.com/forum/showthread.php?t=388818
http://hi.baidu.com/lufa2014/blog/item/0a5c069bbc1017b0c9eaf4fd.html

沒有留言: