NM_CUSTOMDRAW 메시지 핸들러를 등록해서 내부에서 색상을 변경하면 된다.
afx_msg void OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; switch(lplvcd->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYITEMDRAW; break; case CDDS_ITEMPREPAINT: { *pResult = CDRF_DODEFAULT; POSITION pos = GetFirstSelectedItemPosition(); int nSel = GetNextSelectedItem(pos); int row = (int)lplvcd->nmcd.dwItemSpec; if( row == nSel ) { lplvcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT); lplvcd->clrTextBk = GetSysColor(COLOR_HIGHLIGHT); } else { lplvcd->clrText = RGB(0,0,0); lplvcd->clrTextBk = RGB(255,255,255); } } break; default: *pResult = CDRF_DODEFAULT; break; } }
단, tree 스타일에 LVS_SHOWSELALWAYS 속성이 있으면 안된다.
(control property -> Always show selection = false)
'개발 관련 > Windows 개발' 카테고리의 다른 글
CListBox 가로 스크롤 만들기 (0) | 2014.02.26 |
---|---|
Visual studio 디버그 모드와 릴리즈 모드의 차이 (0) | 2013.04.15 |
Installshield 스크립트 팁 (0) | 2013.03.18 |
IE10 설치시 Visual studio 2010 스크립트 디버거 연결 실패 문제 (2) | 2013.03.17 |
Visual studio 찾기 및 바꾸기 wildcards option (0) | 2013.01.16 |
댓글 로드 중…