一开始以为CListBox和CListCtr是差不多的,用CListBox手动添加NM_CUSTOMDRAW消息后,一直不响应,不知道是什么原因,只能改用CListCtr,CListCtr可以通过类向导添加NM_CUSTOMDRAW,就比较方便了.
先定义一个宏#define LRED 1
绑定CListCtr控件变量m_list
通过类向导添加NM_CUSTOMDRAW后,在消息映射函数中添加代码.
void dlg::OnCustomdrawList3(NMHDR *pNMHDR,LRESULT *pResult)
{
LPNMTVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMTVCUSTOMDRAW>(pNMHDR);
*pResult = CDR_DODEFAULT;
NMLVCUSTOMDRAW *pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
if(CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if(CDDS_ITEMPREPAINT | CDDS_SUBITEM==pLVCD->nmcd.dwDrawStage)
{
if(LRED == pLVCD->nmcd.lItemlParam)
{
pNMCD->clrTextBk = RGB(255,0,0);
pNMCD->clrText = RGB(255,0,0);
}
}
}
要设置指定行样式,就要调用m_list.SetItemData(0,LRED);0表示第0行,LRED是定义的宏&#