달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
// CListCtrl에서 상속받은 CExtListCtrl...
class CExtListCtrl : public CListCtrl 

void CExtListCtrl::fnSetSelectionMarK(int nIndex, BOOL bADD, BOOL bFocus)
{
        int nCnt = GetItemCount();
if( nCnt == 0 ) return;

int nBefore = SetSelectionMark(nIndex);
if( nBefore >= 0 && bADD == FALSE )             // 기존것 unselect
SetItemState(nBefore, NULL, LVIS_SELECTED|LVIS_FOCUSED); 
 
       // 선택항목 select 
      SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);

       if( bFocus == TRUE )
  SetFocus();
}

ListCtrl에서 외부에서 새로운 것을 선택하는 함수인 SetSelectionMark()라고 되어 있다.

그러나 SetSelectionMark만 수행시키면 외부에서 보았을 때 안 나타나는 경우가 있다.
또한 기존에 선택되어 있는 것까지 모두 선택되는 문제도 있다.  
과거 것을 지우기 위해 선택되었던 항목 역시 SetItemState로 기존부분을 없애는 부분이 필요하다. 

'삽질' 카테고리의 다른 글

GetImageEncoders Function  (0) 2011.11.04
STL에서 동적할당 pointer 삭제 루틴.  (0) 2011.10.31
Oracle 3개 Table 조인  (0) 2011.10.13
[MFC] ON_COMMAND_RANGE 매크로  (0) 2011.10.13
STL map에서 람다를 활용한 value 찾기  (0) 2011.10.11
Posted by 촌돌애비
|