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 |
댓글 로드 중…