我如何在List框中使其中的一条记录变颜色
我是这样的情况,List框来自不同的信息源,我想使来自不同信息源的记录以不同的颜色来区别

解决方案 »

  1.   

    试用CListCtrl::SetBkColor( COLORREF cr );
    crBackground color to set, or the CLR_NONE value for no background color. List view controls with background colors redraw themselves significantly faster than those without background colors. 
    Example// The pointer to my list view control.
    extern CListCtrl* pmyListCtrl;// Use the 3D button face color for the background.
    COLORREF crBkColor = ::GetSysColor(COLOR_3DFACE);
    pmyListCtrl->SetBkColor(crBkColor);
    ASSERT(pmyListCtrl->GetBkColor() == crBkColor);
    呵呵,我想你应该看的懂~
    不懂我可以翻译~~:)
      

  2.   

    另外一个问题:改了一个Edit框的背景颜色,响应的是WM_CTLCOLOR消息
    代码如下:
    int nID = pWnd->GetDlgCtrlID();
    if(nID == IDC_EDIT_MSGNO)
    {
    pDC->SetBkMode(TRANSPARENT);
    //pDC->SetTextColor(RGB(0,0,0));
    pDC->SetBkColor(RGB(255,255,255));
    HBRUSH b=CreateSolidBrush(RGB(255,255,255));
    return b;
    }
    而这个控件的值是时刻变化的,是100毫秒变一次,是不是要释放这个画刷啊,怎么释放啊?
    到哪里释放?
      

  3.   

    to: joy0861(深呼吸) 你的方法是可以改变背景颜色,但是你这样的话是不是将真个list框的背景都改掉了?
    如果只是改某一行,甚至只是要改某一行的某一列的前景或者背景色,怎么办?
      

  4.   

    需要释放,否则会丢失handle资源.通常的一个办法是在类中定义一个CBrush类对象m_brush.
    每次改变颜色的时候
    m_brush.DelectObject();
    m_brush.CreateSolidBrush(..);在OnCtlColor中
    return m_brush.GetSafeHandle();
      

  5.   

    BCG的listctrl应该可以,自己没有研究过。
    关注中。。