郁闷啊!怎么回事啊?

解决方案 »

  1.   

    BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)    
    {   
        CDC dc;   
        dc.CreateCompatibleDC(pDC);   
        CBitmap *pOldBit=dc.SelectObject(&m_Back);  
            BITMAP hb;   
        m_Back.GetBitmap(&hb);   
      
        CRect rt;   
        GetClientRect(&rt);   
           
        pDC->StretchBlt(0, 0, rt.Width(), rt.Height(),   
            &dc, 0, 0, hb.bmWidth, hb.bmHeight, SRCCOPY);  //dc.SelectObject (pOldBit);//
      
        return TRUE;   
    }   
      

  2.   

    BOOL CMyDlg::OnEraseBkgnd( CDC* pDC )
    {
    RECT rt;   
    GetWindowRect(&rt);   
    ScreenToClient(&rt);
    pDC->FillSolidRect(&rt, RGB(0,255,0));
    return TRUE;
    }
      

  3.   

    给你一段代码:
    if( m_bmpBackground.GetSafeHandle() != NULL )
        {
            CDC*   pDCTemp = new CDC;;
            BITMAP bmp;        pDCTemp->CreateCompatibleDC( &dc );        m_bmpBackground.GetBitmap( &bmp );        // Select the bitmap into the temp device context
            CBitmap* pOldBitmap = (CBitmap*) pDCTemp->SelectObject( &m_bmpBackground );        // Stretch the bitmap to fill the entire control area
            pDCMem->StretchBlt( 0, 0, rFrame.Width(), rFrame.Height(), pDCTemp,
                                0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);        pDCTemp->SelectObject( pOldBitmap ); 
            
            delete pDCTemp;
        }
        else
      

  4.   

    最好是在OnPaint中绘制, 因为WM_PAINT消息在WM_ERASEBACKGROND之后响应。