代码如下:
BOOL CScrollPtStatic::OnEraseBkgnd(CDC* pDC)
{
CStatic::OnEraseBkgnd(pDC);
CDC m_ScMemmdc;
m_ScMemmdc.CreateCompatibleDC(pDC);
m_ScMemmdc.SetMapMode(m_dc->GetMapMode());
///准备工作
    TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
UINT nWidth = tm.tmAveCharWidth * m_strText.GetLength()+2*width;
UINT nHeight = height; m_ScMemmdc.SelectObject(this->GetFont());
m_ScMemmdc.SetTextColor(RGB(255, 0, 0)); CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&m_ScMemmdc,nWidth,nHeight);
CBitmap* pOldBitmap = m_ScMemmdc.SelectObject(&bitmap);
m_ScMemmdc.FillSolidRect(0,0,nWidth,nHeight,m_dc->GetBkColor());
    m_ScMemmdc.TextOut(0,0,m_strText);
    
    m_dc->BitBlt(0,0,width,nHeight,&m_ScMemmdc,mstartX,0,SRCCOPY);
m_ScMemmdc.SelectObject(pOldBitmap);
m_ScMemmdc.DeleteDC();
bitmap.DeleteObject();  return true;
}

解决方案 »

  1.   

    最后 return FALSE; ??
      

  2.   

    改成 return 0; return 1; 都没有用啊
      

  3.   

    m_pc那里来的.(本来想帮你试一试的)
      

  4.   

    m_pc就是pdc,但我都改为pdc之后,还是不能正确显示。         
    CStatic::OnEraseBkgnd(pDC);
    pDC->SetBkMode(TRANSPARENT);
    CDC m_ScMemmdc;
    m_ScMemmdc.CreateCompatibleDC(pDC);
    m_ScMemmdc.SetMapMode(pDC->GetMapMode());
    ///准备工作
        TEXTMETRIC tm;
    pDC->GetTextMetrics(&tm);
    UINT nWidth = tm.tmAveCharWidth * m_strText.GetLength()+2*width;
    UINT nHeight = height; m_ScMemmdc.SelectObject(this->GetFont());
    m_ScMemmdc.SetTextColor(RGB(255, 0, 0)); CBitmap bitmap;
    bitmap.CreateCompatibleBitmap(&m_ScMemmdc,nWidth,nHeight);
    CBitmap* pOldBitmap = m_ScMemmdc.SelectObject(&bitmap);
    m_ScMemmdc.FillSolidRect(0,0,nWidth,nHeight,pDC->GetBkColor());
        m_ScMemmdc.TextOut(0,5,m_strText);
        
        pDC->BitBlt(0,0,width,nHeight,&m_ScMemmdc,mstartX,0,SRCCOPY);
    m_ScMemmdc.SelectObject(pOldBitmap);
    m_ScMemmdc.DeleteDC();
    bitmap.DeleteObject();  return 0;
      

  5.   

    我把ON_WM_PAINT消息注销了啊。  这样不能解决 onpaint覆盖的问题么? 那该怎么处理?