如何改变ListCtrl内单行字的颜色,急啊!!!

解决方案 »

  1.   

    BOOL CDlgList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
    {
    // TODO: Add your specialized code here and/or call the base class
    NMHDR *p=(NMHDR*)lParam;
    if(p->code==NM_CUSTOMDRAW && p->idFrom==IDC_LIST1)
    {
    NMLVCUSTOMDRAW *lvcd=(NMLVCUSTOMDRAW*)p;
    NMCUSTOMDRAW &nmcd=lvcd->nmcd;
    switch(nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
    *pResult=CDRF_NOTIFYITEMDRAW;
    break;
    case CDDS_ITEMPREPAINT:
    {
    int iRow=(int)nmcd.dwItemSpec;
    if(iRow % 2)
    lvcd->clrTextBk=RGB(255,255,255);
    else
    lvcd->clrTextBk=RGB(200,200,200);
    *pResult=CDRF_DODEFAULT;
    break;
    }
    default:
    *pResult=CDRF_DODEFAULT;
    break;
    }
    return TRUE;
    }
    return CDialog::OnNotify(wParam, lParam, pResult);
    }希望对你有帮助
      

  2.   

    void CMyDlg::OnCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult)
    {
    NMLVCUSTOMDRAW* pLVCD=(NMLVCUSTOMDRAW*)pNMHDR;

        *pResult=0;

        if (CDDS_PREPAINT==pLVCD->nmcd.dwDrawStage )
    {
            *pResult=CDRF_NOTIFYITEMDRAW;
    }
        else if (CDDS_ITEMPREPAINT==pLVCD->nmcd.dwDrawStage)
    {
            *pResult=CDRF_NOTIFYSUBITEMDRAW;
    }
    else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
        {
        COLORREF crText;

    PCASEITEM pItem=(PCASEITEM)m_lstctlTable.GetItemData(pLVCD->nmcd.dwItemSpec); if (pItem->bDeleted)
    {
                if (3==pLVCD->iSubItem)
    {
    crText=RGB(250, 0, 0);
    }
    else
    {
    crText=RGB(0, 0, 0);
    }
    }
            else
    {
                crText=RGB(0, 0, 0);
    }

            pLVCD->clrText=crText;
    pLVCD->clrTextBk=(pLVCD->nmcd.dwItemSpec%2) ? RGB(235,235,235):RGB(255,255,255); *pResult = CDRF_DODEFAULT;
    }
    }
      

  3.   

    http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=323
    去看看,里面有。
      

  4.   

    http://community.csdn.net/Expert/topic/3448/3448422.xml?temp=.3744928
      

  5.   

    void CTest6Dlg::OnCustomdrawMyList ( 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 )
    {
    *pResult = CDRF_NOTIFYSUBITEMDRAW;
    }
    else 
    if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
    {
    COLORREF clrNewTextColor, clrNewBkColor;
    int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );

    if( (1 == pLVCD->iSubItem))
    {
    clrNewTextColor = RGB(255,0,0);
    clrNewBkColor = RGB(255,255,0);
    }
    else
    {
    clrNewTextColor = RGB(0,0,0);
    clrNewBkColor = RGB(255,255,255);
    }

    pLVCD->clrText = clrNewTextColor;
    pLVCD->clrTextBk = clrNewBkColor;

    *pResult = CDRF_DODEFAULT;    
    }
    }
      

  6.   

    SetBkColor();
    SetTextColor();
    SetTextBkColor();