void CbgListCtrl::OnPaint() 
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

// Do not call CListCtrl::OnPaint() for painting messages
CDC memDC; CRect rtClient;
GetClientRect(&rtClient);
memDC.CreateCompatibleDC(&dc);
m_bitmap.CreateCompatibleBitmap(&dc,rtClient.Width(),rtClient.Height());
m_bitmap.LoadBitmap(IDB_BITMAP);
CBitmap* pOldBitmap=memDC.SelectObject(&m_bitmap);
dc.BitBlt(0,0,rtClient.Width(),rtClient.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBitmap);
}
//m_bitmap 是类的成员变量;

解决方案 »

  1.   

    CPaintDC dcFace(this);
    CRect rcClient;
    GetClientRect(&rcClient); CDC MemDC; 
    CBitmap MemBitmap;
    MemDC.CreateCompatibleDC(NULL);
    MemBitmap.CreateCompatibleBitmap(&dcFace,rcClient.Width(),rcClient.Height());
    CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
    MemDC.FillSolidRect(&rcClient,RgbWhite); dcFace.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&MemDC,0,0,SRCCOPY);
    MemDC.SelectObject(pOldBit);
    MemBitmap.DeleteObject();
    ReleaseDC(&MemDC);
    MemDC.DeleteDC();
      

  2.   

    问题就在这一句CBitmap* pOldBitmap=memDC.SelectObject(&m_bitmap);
      

  3.   

    m_bitmap.LoadBitmap(IDB_BITMAP);改为
    if ( (HBITMAP)m_bitmap == NULL )
    {
    m_bitmap.LoadBitmap(IDB_BITMAP);
    }
      

  4.   

    m_bitmap.LoadBitmap(IDB_BITMAP);
    //不好意思贴错了
      

  5.   

    to xt_jat(桑巴) 
    你这样编译能过通过但是达不到目的
      

  6.   

    雷大哥说得对,怎么解决呢?cuterain(打雷下雨收衣服喽) 
     
     
      
      

  7.   

    这段代码我没试过,但我觉得主要的原因在m_bitmap.LoadBitmap(IDB_BITMAP);这一句,当第一次执行时应没问题,但当第二次进入OnPaint时,再执行上面一句,由于m_bitmap句柄不为空,会引起内部的一个断言错误。不知道我的理解对不对,请楼主在问题解决了后说一下你的解决办法