[VC++][MFC] CListCtrl (List Control) 다중 선택 관리
2009. 6. 22. 11:39 in Programming/VC++ [MFC]

CListCtrl 에서 Multi Mark 관리 하기..
삭제시 유의해야할 점은... 선택 끝부분 부터 삭제하는것이 좋다...
0 ~ 5까지의 List 중 1, 3을 낮은 순으로 삭제하게 되면
실제 1, 4가 삭제되는 현상이 생긴다.
더 좋은 방법이 있을련지 모르겠지만 일단 이방법을 사용한다 -_-a
- void CDlgTest::OnBnClickedBtnTest()
- {
- POSITION pos;
- pos = m_listctrl.GetFirstSelectedItemPosition();
- while(pos)
- {
- int nSelected = m_listctrl.GetNextSelectedItem(pos);
- m_listctrl.SetItemText(nSelected, 1, L"Modify Testing");
- }
- }
삭제시 유의해야할 점은... 선택 끝부분 부터 삭제하는것이 좋다...
0 ~ 5까지의 List 중 1, 3을 낮은 순으로 삭제하게 되면
실제 1, 4가 삭제되는 현상이 생긴다.
- void CDlgTest::OnBnClieckedBtnDeleteTest()
- {
- POSITION pos;
- pos = m_listctrl.GetFirstSelectedItemPosition();
- std::vector<int> selectedList;
- while(pos)
- {
- int nSelected = m_listctrl.GetNextSelectedItem(pos);
- selectedList.push_back(nSelected);
- }
- for(int i = (int)selectedList.size() - 1; i >= 0; --i)
- {
- m_listctrl.DeleteItem(selectedList[i]);
- }
- }
더 좋은 방법이 있을련지 모르겠지만 일단 이방법을 사용한다 -_-a