程序中有时候,需要根据需要改变listctrl某行、某列、某个单元格 的颜色,一般有两种方法,一是派生出新的listctrl类,更容易进行精细的调整。二是响应NM_CUSTOMDRAW消息,这种只是在对话框函数内添加个函数即可
1、对话框添加NM_CUSTOMDRAW消息
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, &CCheckDlg::OnNMCustomdrawList1)
2、
void CCheckDlg::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
switch (pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
return;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
return;
case CDDS_ITEMPREPAINT|CDDS_SUBITEM:
{
COLORREF crText, crBkgnd;
int row = pLVCD->nmcd.dwItemSpec;//行
int col = pLVCD->iSubItem;//列
if ( 1 =