为CListCtrl组件添加消息NM_CUSTOMDRAW处理:
void Cpage2_listCtrl::OnNMCustomdrawListEarthwormThread(NMHDR *pNMHDR, LRESULT *pResult)
{NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
COLORREF clrNewTextColor, clrNewBkColor;
int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec );
//如果当前进程Dead,则显示字体为红色,否则为黑色
CString cCurStr;
cCurStr = m_listCtrl.GetItemText(nItem,2);
//给Dead、Stop、NoExec、Alive的线程行添加颜色标记
if(CString("Dead")==cCurStr||CString("Stop")==cCurStr)
{
clrNewTextColor = RGB( 255, 0, 0 ); //字体---红色
clrNewBkColor = RGB( 240, 200, 240 ); //背景---暗红色
}else if(CString("NoExec")==cCurStr)
{
clrNewTextColor = RGB( 255, 0, 0 ); //字体---深蓝色
clrNewBkColor = RGB( 128, 255, 255 ); //背景---淡蓝色
}else{
clrNewTextColor = RGB( 0, 0, 0 ); //字体---黑色
clrNewBkColor = RGB( 255, 255, 255 ); //背景---白色
}
pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
*pResult = CDRF_DODEFAULT;
}
}