我对clistCtrl进行行修改,修改以后我想把行的背景色换掉,以示区别~请问这个怎么做
m_List.SetBkColor(RGB(255,   255,0));仅仅是修改整个背景。
没有现成的函数调用~谁写过的,讲讲方法或者代码贴一下,谢谢~~

解决方案 »

  1.   

    http://vckbase.com/document/viewdoc/?id=1480
    重载
      

  2.   

    我前两天查了好多资料,正好给你。 也可以重载DrawItem,但是比较麻烦,要自己绘void C_CodeList::OnCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
    {
    // TODO: Add your control notification handler code here
    LPNMLVCUSTOMDRAW pnmCustDraw   =   (LPNMLVCUSTOMDRAW)pNMHDR;  TRACEINFO(L"OnNMCustomdrawList1");
    switch(pnmCustDraw->nmcd.dwDrawStage)
    {  
    case   CDDS_PREPAINT:  
    *pResult = CDRF_NOTIFYITEMDRAW ;
    break;  case CDDS_ITEMPREPAINT:
    {
    COLORREF clrCodeInvalidColor;
    clrCodeInvalidColor = RGB(0xff, 0x00, 0x00); pnmCustDraw->clrTextBk = clrCodeInvalidColor; }
    break;
    }
    case CDDS_SUBITEM:
    {
    break;
    } case   CDDS_ITEMPOSTPAINT:
    {  

    *pResult   =   CDRF_DODEFAULT;  
    break;  
    }  
    default:  
    *pResult   =   CDRF_DODEFAULT;  
    break;  
    }   
    return ;
    }
      

  3.   

    下面是别人的代码  希望对你有帮助响应NM_CUSTOMDRAW进行重绘。。下面的代码演示了让ListCtrl隔行颜色不同的效果:ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)void CMyListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
    {
        LPNMLVCUSTOMDRAW  lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR;
        *pResult = 0;    switch(lplvcd->nmcd.dwDrawStage)
        {   
            case CDDS_PREPAINT :
                *pResult = CDRF_NOTIFYITEMDRAW;
                break;
            case CDDS_ITEMPREPAINT:
                *pResult =  CDRF_NOTIFYSUBITEMDRAW;
                break;
            case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
                if(lplvcd->nmcd.dwItemSpec % 2)
                {
                    lplvcd->clrTextBk = RGB(255,255,200);
                }
                else
                {
                    lplvcd->clrTextBk = RGB(255,255,255);
                }
                *pResult = CDRF_NEWFONT;
                break;
        }
    }
      

  4.   

    应该可以啊。获取你所选中的行的索引值。m_list.GetCurSel(),然后将楼上说的方法写成函数ChangeItemColor(int nSelect),就可以啊
      

  5.   

    加载的时候就调用了OnCustomDraw,而且还有NMHDR* pNMHDR, LRESULT* pResult这些参数,我点了以后哪去这些参数值啊