// CListCtrl에서 상속받은 CExtListCtrl...
void CExtListCtrl::fnSetSelectionMarK(int nIndex, BOOL bADD, BOOL bFocus)
{
int nCnt = GetItemCount();
class CExtListCtrl : public CListCtrl
{
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
// 선택항목 select
SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
ListCtrl에서 외부에서 새로운 것을 선택하는 함수인 SetSelectionMark()라고 되어 있다.
그러나 SetSelectionMark만 수행시키면 외부에서 보았을 때 안 나타나는 경우가 있다.
또한 기존에 선택되어 있는 것까지 모두 선택되는 문제도 있다.
과거 것을 지우기 위해 선택되었던 항목 역시 SetItemState로 기존부분을 없애는 부분이 필요하다.
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 |
|
댓글0
댓글을 달아 주세요