谢谢你,能否帮我看看这个问题出在哪? BOOL CColorlistctlDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: Add your specialized code here and/or call the base class NMHDR *P=(NMHDR*)lParam; if (p->code==NM_CUSTOMDRAW&&p->idFrom==IDC_LIST1) { NMLVCUSTOMDRAW *lvcd=(NMLVCUSTOMDRAW*)p; NMCUSTOMDRAW &nmcd=lvcd->nmcd; switch(nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult=CDRF_NOTIFYITEMDRAW; break; case CDDS_ITEMPREPAINT: { int iRow=(int)nmcd.dwItemSpec; if(iRow%2) lvcd->clrTextBk=RGB(192,192,0); else lvcd->clrTextBk=RGB(0,192,192); *pResult=CDRF_DODEFAULT; break; } default: *pResult=CDRF_DODEFAULT; break; } return TRUE; } return CDialog::OnNotify(wParam, lParam, pResult); } 结果编译的时候 F:\mywork\colorlistctl\colorlistctlDlg.cpp(176) : error C2065: 'p' : undeclared identifier F:\mywork\colorlistctl\colorlistctlDlg.cpp(176) : error C2227: left of '->code' must point to class/struct/union F:\mywork\colorlistctl\colorlistctlDlg.cpp(176) : error C2227: left of '->idFrom' must point to class/struct/union(176)是 if (p->code==NM_CUSTOMDRAW&&p->idFrom==IDC_LIST1)这行
从中选出OnNotify函数就可以了,不需要自己写的
当然也可以添加如下代码:.h
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CWaterShopView)
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
//}}AFX_VIRTUAL.cpp
BOOL CShopView::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
return CView::OnNotify(wParam, lParam, pResult);
}
BOOL CColorlistctlDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
NMHDR *P=(NMHDR*)lParam;
if (p->code==NM_CUSTOMDRAW&&p->idFrom==IDC_LIST1)
{
NMLVCUSTOMDRAW *lvcd=(NMLVCUSTOMDRAW*)p;
NMCUSTOMDRAW &nmcd=lvcd->nmcd;
switch(nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult=CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
int iRow=(int)nmcd.dwItemSpec;
if(iRow%2)
lvcd->clrTextBk=RGB(192,192,0);
else
lvcd->clrTextBk=RGB(0,192,192);
*pResult=CDRF_DODEFAULT;
break;
}
default:
*pResult=CDRF_DODEFAULT;
break;
}
return TRUE;
}
return CDialog::OnNotify(wParam, lParam, pResult);
}
结果编译的时候
F:\mywork\colorlistctl\colorlistctlDlg.cpp(176) : error C2065: 'p' : undeclared identifier
F:\mywork\colorlistctl\colorlistctlDlg.cpp(176) : error C2227: left of '->code' must point to class/struct/union
F:\mywork\colorlistctl\colorlistctlDlg.cpp(176) : error C2227: left of '->idFrom' must point to class/struct/union(176)是 if (p->code==NM_CUSTOMDRAW&&p->idFrom==IDC_LIST1)这行
编译器不认识你的指针P,看是否包含了定义NMHDR 所在的头文件