2008/01/17

List Control의 배경색 제어하기

밋밋한 배경의 리스트 컨트롤을 배경을 제어하여 좀 더 보기 좋게 만드는 방법이다.


사용자 삽입 이미지

CListCtrol의 NM_CUSTOMDRAW 의 메세지 핸들러를 작성하면 된다
Source Code

void CDlg::OnNMCustomdrawListControl(NMHDR *pNMHDR,
LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD;
pNMCD = reinterpret_cast(pNMHDR);

*pResult = 0;

LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
int iRow = (int)lplvcd->nmcd.dwItemSpec;

switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT :
{
*pResult = CDRF_NOTIFYITEMDRAW;
return;
}

// Modify item text and or background
case CDDS_ITEMPREPAINT:
{
lplvcd->clrText = RGB(0,0,0);
// If you want the sub items the same as the item,
// set *pResult to CDRF_NEWFONT
*pResult = CDRF_NOTIFYSUBITEMDRAW;
return;
}

// Modify sub item text and/or background
case CDDS_SUBITEM | CDDS_PREPAINT | CDDS_ITEM:
{
if(iRow % 2){
// 홀수열의 배경색 재설정
lplvcd->clrTextBk = RGB(255, 255, 255);
}
else{
// 짝수열의 배경색 재설정
lplvcd->clrTextBk = RGB(230, 230, 230);
}

if (iRow < m_nHighlightedItems)
{
// 조건에 맞을 경우 폰트 색상 변경
lplvcd->clrText = RGB(0, 0, 255);
}

*pResult = CDRF_DODEFAULT;
return;
}
}
}



Original Post : http://neodreamer-dev.tistory.com/40

No comments :

Post a Comment