通过重绘也可以重载DrawItem来实现。
由于vc6.0没有NM_CUSTOMDRAW消息。vs。net或许有。所以自己需要手动添加这个消息。
第一步:
list的头文件中添加
afx_msg void OnCustomdrawList ( NMHDR* pNMHDR, LRESULT* pResult );
第二步:
cpp文件中添加:
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_BUFFERCARD, OnCustomdrawList)
第三步:实现函数:
void CBufferCardPropertyDlgBar::OnCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
*pResult = 0;
switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT :
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
if(lplvcd->nmcd.dwItemSpec==0)
{
lplvcd->clrTextBk = RGB(255,0,0); //红色
}
if(lplvcd->nmcd.dwItemSpec==1)
{
lplvcd->clrTextBk = RGB(0,255,0); //绿色
}
if(lplvcd->nmcd.dwItemSpec==2)
{
lplvcd->clrTextBk = RGB(0,0,255); //蓝色
}
if(lplvcd->nmcd.dwItemSpec==3)
{
lplvcd->clrTextBk = RGB(255,255,0); //黄色
}
if(lplvcd->nmcd.dwItemSpec==4)
{
lplvcd->clrTextBk = RGB(160,32,240); //紫色
}
if(lplvcd->nmcd.dwItemSpec==5)
{
lplvcd->clrTextBk = RGB(0,255,255); //青色
}
if(lplvcd->nmcd.dwItemSpec==6)
{
lplvcd->clrTextBk = RGB(255,97,0); //橙色
}
if(lplvcd->nmcd.dwItemSpec==7)
{
lplvcd->clrTextBk = RGB(0,255,127); //嫩绿色
}
if((lplvcd->nmcd.dwItemSpec)>7)
{
lplvcd->clrTextBk = RGB(0,0,0); //黑色
}
*pResult = CDRF_NEWFONT;
break;
}
}