void fabandlg::OnCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
 {     NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
 
     *pResult = CDRF_DODEFAULT;     if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
     {
         *pResult = CDRF_NOTIFYITEMDRAW;
     }
     else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
     {
         COLORREF crBk;         if (??这个判断应该怎么写?? )//这个判断
             crBk =RGB(22,232,23);         else 
             crBk = RGB(240,47,249);         pLVCD->clrTextBk = crBk;
         
 *pResult = CDRF_NEWFONT;     }
 m_static_list.SetItemText(0,5,"OK");
如果满足这一列的条件“OK”,就显绿色,其它的都是红色。

解决方案 »

  1.   

    如: int nItem = (int)lpNMCustomDraw->nmcd.dwItemSpec; 
    int nSubItem = lpNMCustomDraw->iSubItem;  COLORREF crText;
    if ( (pLVCD->nmcd.dwItemSpec % 3) == 0 ) crText = RGB(255,0,0);
    else if ( (pLVCD->nmcd.dwItemSpec % 3) == 1 ) crText = RGB(0,255,0);
    else crText = RGB(128,128,255);
    // Store the color back in the NMLVCUSTOMDRAW struct.
    pLVCD->clrTextBk = crText;
      

  2.   

    用SetItemData即可。比如,有一行index=3正在进行读写,可以令SetItemData(3,1);
    其他的SetItemData(index,0);在OnCustomdrawList中:
    if (pLVCD->nmcd.lItemlParam)//来判断是不是正在读的行
        crBk =RGB(22,232,23);
    else
        crBk = RGB(240,47,249);
      

  3.   

    可能我的意思还不够明确,我还不断的输入数据,输入的结果都在LIST显示,如果能输入就显示“OK”,不能输入就显示其它的,我想要的目的是“OK”的行的背景颜色显示绿色,其它的就红色
      

  4.   

    “如果能输入就显示“OK”,不能输入就显示其它的,”把所有能输入 行的idx,放在  一个 数组 里。
    那么:
    if ( (pLVCD->nmcd.dwItemSpec == 数组里的idx ) pLVCD->clrTextBk = RGB(0,255,0);