本该有效的一段代码,现在无效
void CConfigStorageAssignListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
if ( CDDS_PREPAINT == lplvcd->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == lplvcd->nmcd.dwDrawStage )
{
if (GetItemText(lplvcd->nmcd.dwItemSpec, 1) == "Default")
{
lplvcd->clrText = RGB(128,255,255);
lplvcd->clrTextBk = RGB(255,255,255);
}
// Tell Windows to paint the control itself.
*pResult = CDRF_DODEFAULT;
}
}
断点调试进入
lplvcd->clrText = RGB(128,255,255);
lplvcd->clrTextBk = RGB(255,255,255);
但是没有效果
是什么原因呢

解决方案 »

  1.   

    void CConfigStorageAssignListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 

    LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; 
    if ( CDDS_PREPAINT == lplvcd->nmcd.dwDrawStage ) 

    *pResult = CDRF_NOTIFYITEMDRAW; 

    else if ( CDDS_ITEMPREPAINT == lplvcd->nmcd.dwDrawStage ) 

    if (GetItemText(lplvcd->nmcd.dwItemSpec, 1) == "Default") 

    lplvcd->clrText = RGB(128,255,255); 
    lplvcd->clrTextBk = RGB(255,255,255); 

    // Tell Windows to paint the control itself. 
    else
       *pResult = CDRF_DODEFAULT; 

    } 在*pResult = CDRF_DODEFAULT;前加一个else
      

  2.   

    没有
    原先哪个代码,我在单独的ListCtrl就可以的
    只是现在我这个ListCtrl不行,不知原因在哪
      

  3.   

    void CConfigStorageAssignListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 

    LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; 
    if ( CDDS_PREPAINT == lplvcd->nmcd.dwDrawStage ) 

    *pResult = CDRF_NOTIFYITEMDRAW; 

    else if ( CDDS_ITEMPREPAINT == lplvcd->nmcd.dwDrawStage ) 

    if (GetItemText(lplvcd->nmcd.dwItemSpec, 1) == "Default") 

    lplvcd->clrText = RGB(128,255,255); 
    lplvcd->clrTextBk = RGB(255,255,255); 

    // Tell Windows to paint the control itself. 
    else 
      *pResult = CDRF_DODEFAULT; 

    } 在*pResult = CDRF_DODEFAULT;前加一个else
      

  4.   

    试试这个代码void CConfigStorageAssignListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 

    LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; 
    if ( CDDS_PREPAINT == lplvcd->nmcd.dwDrawStage ) 

    *pResult = CDRF_NOTIFYITEMDRAW; 

    else if ( CDDS_ITEMPREPAINT == lplvcd->nmcd.dwDrawStage ) 

    if (CListCtrl::GetItemText(lplvcd->nmcd.dwItemSpec, 1) == "Default") 

    lplvcd->clrText = RGB(128,255,255); 
    lplvcd->clrTextBk = RGB(255,255,255); 

    // Tell Windows to paint the control itself. 
    *pResult = CDRF_NEWFONT;   //
    }
    else
    {
    *pResult = CDRF_DODEFAULT; 
    }