void CTestDlg::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{ *pResult = CDRF_DODEFAULT;
NMLVCUSTOMDRAW * lplvdr=(NMLVCUSTOMDRAW*)pNMHDR;
switch(lplvdr->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
lplvdr->clrText=(COLORREF)lplvdr->nmcd.lItemlParam;
SelectObject(lplvdr->nmcd.hdc,_T("Arial"));
*pResult= CDRF_NEWFONT;
break;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
lplvdr->clrText=(COLORREF)lplvdr->nmcd.lItemlParam;
break;
}
}请问第一个case和第三个case各是什么作用?
另外,m_list.SetItemData(n/*行*/,(DWORD)RGB(0,0,0)/*颜色*/);后有没有释放指针内存的问题?我发现这样一个问题:
假设一个值等于1的时候为绿色,等于零时为红色。
开始为1,字为绿色。改变值为0的时候依旧是绿色。
而如果一开始就为0,那么字是黑色。
不知道你说的“值”是什么,看你的代码应该调用SetItemData设置项目颜色,参数就是颜色值,也可能没有刷新。
case中的代码查MSDN就有。