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,那么字是黑色。