这种效果可以通过发送 一个NM_CUSTOMDRAW 消息就能够轻松解决。
class CMemWatchListCtrl : public CListCtrl
{
//
void OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult);//用于重绘制
//
}
//ON_NOTIFY_REFLECT 是因为这是从CListCtrl继承的一个类
BEGIN_MESSAGE_MAP(CMemWatchListCtrl, CListCtrl)
ON_NOTIFY_REFLECT( NM_CUSTOMDRAW , OnCustomDraw ) //消息映射
END_MESSAGE_MAP()
View Code
1 void CMemWatchListCtrl::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult) 2 { 3 //类型安全转换 4 NMLVCUSTOMDRAW* pDraw = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); 5 *pResult = 0; //指定列表项绘制前后发送消息 6 if(CDDS_PREPAINT == pDraw->nmcd.dwDrawStage) 7 { 8 *pResult = CDRF_NOTIFYITEMDRAW; 9 } else if( CDDS_ITEMPREPAINT == pDraw->nmcd.dwDrawStage ) 10 { //奇数行 11 if(pDraw->nmcd.dwItemSpec % 2) 12 pDraw->clrTextBk = ODD; 13 14 else 15 pDraw->clrTextBk = EVEN; 16 *pResult = CDRF_DODEFAULT; 17 } 18 }
这样就可以实现该功能