2003. 6. 19. 20:43
// 0. ListControl을 상속한 클래스의 헤더파일에 다음과 같은 함수를 선언해 줍니다.
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
// 1. ListControl을 상속한 클래스 CPP파일의 메세지 맵에 다음과 같이 적어줍니다.
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
// 2. 메시지 처리함수를 다음과 같이 만듭니다.
void CMyListControl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
int iRow;
switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_DODEFAULT;
iRow = lplvcd->nmcd.dwItemSpec;
lplvcd->clrTextBk = RGB(220, 220, 220);
lplvcd->clrText = RGB(0, 0, 0);
break;
default:
*pResult = CDRF_DODEFAULT;
}
}
// 3. 코드 중간에 보이는 iRow의 값은 현재 그릴 Row의 숫자이고, 그 아랫줄의
// RGB 를 편집하면, 각 Row 마다 각각 다른 글자색과 배경색을 가지고 ListControl을
// 만들수 있습니다.
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
// 1. ListControl을 상속한 클래스 CPP파일의 메세지 맵에 다음과 같이 적어줍니다.
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
// 2. 메시지 처리함수를 다음과 같이 만듭니다.
void CMyListControl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
int iRow;
switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_DODEFAULT;
iRow = lplvcd->nmcd.dwItemSpec;
lplvcd->clrTextBk = RGB(220, 220, 220);
lplvcd->clrText = RGB(0, 0, 0);
break;
default:
*pResult = CDRF_DODEFAULT;
}
}
// 3. 코드 중간에 보이는 iRow의 값은 현재 그릴 Row의 숫자이고, 그 아랫줄의
// RGB 를 편집하면, 각 Row 마다 각각 다른 글자색과 배경색을 가지고 ListControl을
// 만들수 있습니다.