달력

062018  이전 다음

  •  
  •  
  •  
  •  
  •  
  • 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
// 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로 기존부분을 없애는 부분이 필요하다. 
Posted by 촌돌애비

댓글을 달아 주세요

티스토리 툴바