[VC++][MFC] CListCtrl (List Control) 다중 선택 관리

CListCtrl 에서 Multi Mark 관리 하기..


  1. void CDlgTest::OnBnClickedBtnTest()  
  2. {  
  3.     POSITION pos;  
  4.     pos = m_listctrl.GetFirstSelectedItemPosition();  
  5.   
  6.     while(pos)  
  7.     {  
  8.         int nSelected = m_listctrl.GetNextSelectedItem(pos);  
  9.         m_listctrl.SetItemText(nSelected, 1, L"Modify Testing");  
  10.     }  
  11. }  



삭제시 유의해야할 점은... 선택 끝부분 부터 삭제하는것이 좋다...
0 ~ 5까지의 List 중 1, 3을 낮은 순으로 삭제하게 되면
실제 1, 4가 삭제되는 현상이 생긴다.

  1. void CDlgTest::OnBnClieckedBtnDeleteTest()  
  2. {  
  3.     POSITION pos;  
  4.     pos = m_listctrl.GetFirstSelectedItemPosition();  
  5.     std::vector<int> selectedList;  
  6.   
  7.     while(pos)  
  8.     {  
  9.         int nSelected = m_listctrl.GetNextSelectedItem(pos);  
  10.         selectedList.push_back(nSelected);  
  11.     }  
  12.   
  13.     for(int i = (int)selectedList.size() - 1; i >= 0; --i)  
  14.     {  
  15.         m_listctrl.DeleteItem(selectedList[i]);  
  16.     }  
  17. }  


더 좋은 방법이 있을련지 모르겠지만 일단 이방법을 사용한다 -_-a