改变行颜色及背景色也可以不派生新的CListViewCtrl类,直接在对话框中处理即可:
BEGIN_MSG_MAP(CMainDlg)
NOTIFY_HANDLER(IDC_LIST_COLOR_CTRL, NM_CUSTOMDRAW, OnNmCustomdrawListColorCtrl)
// REFLECT_NOTIFICATIONS()
// CHAIN_MSG_MAP_MEMBER(m_colorListCtrl)
END_MSG_MAP()
对象和控件之间直接Attach();
LRESULT OnNmCustomdrawListColorCtrl(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
LPNMCUSTOMDRAW lpNMCustomDraw = (LPNMCUSTOMDRAW)pnmh;
switch(lpNMCustomDraw->dwDrawStage)
{
case CDDS_PREPAINT:
{
return CDRF_NOTIFYITEMDRAW;
}
break;
case CDDS_ITEMPREPAINT:
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( lpNMCustomDraw );
int nItem = pLVCD->nmcd.dwItemSpec;
// todo
return CDRF_NOTIFYSUBITEMDRAW;
}
break;
#if (_WIN32_IE >= 0x0400)
case (CDDS_ITEMPREPAINT | CDDS_SUBITEM):
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( lpNMCustomDraw );
int nItem = pLVCD->nmcd.dwItemSpec;
int nSubItem = pLVCD->iSubItem;
// todo
return CDRF_DODEFAULT;
}
break;
#endif // (_WIN32_IE >= 0x0400)
default:
SetMsgHandled(FALSE);
break;
}
}