从CListCtrl派生一个新类,擦除背景色在基于对话框的工程中可以看到效果;
但把它用到CFormView的模板中,就无论如何也不行了.只是没有效果,不知道什么原因.

解决方案 »

  1.   

    你取到CFormView的指针没有?是怎样调用擦除功能的??
      

  2.   

    资源管理器按下"搜索"后,在左侧应出现的画面.
    我在CFormViewLeft的OnDraw(CDC* pDC)中画背景:
    CRect rect;
    GetClientRect(&rect); 
    pDC->Draw3dRect(rect.left, rect.top, rect.Width(), 20,
    GetSysColor(COLOR_3DLIGHT), GetSysColor(COLOR_3DFACE));
    rect.top += 20;
    pDC->SelectObject(&m_fontSong);
    pDC->TextOut(10,5, "搜索助理");
    pDC->FillSolidRect(&rect, GetSysColor(COLOR_INACTIVECAPTION));派生自CListCtrl的CListCtrlEx响应WM_ERASEBKGRND
    CRect rect;
    GetClientRect(&rect);
    pDC->SelectObject(&m_bkBrush);
    pDC->FillRect(&rect,&m_bkBrush);
    pDC->SetTextColor(RGB(0,0,255));
    pDC->TextOut(5,10, "This is a ListCtrl.");
    return TRUE;
    这段代码在基于对话框的工程中可以看到效果,但在单文档中的分割窗口中不会被刷新,也就是说他可能没收到这条消息,我让控件自己负责画背景,没错吧.用类向导生成的变量,把它改成CListCtrlEx类型.
      

  3.   

    在哪
    SetBkColor(GetSysColor(18))?
    WM_CTRLCOLOR 对LIST CONTROL不起作用滴