void CMainView::OnDraw(CDC* pDC)
{
CDC dcBit;
CBitmap bmp;

dcBit.CreateCompatibleDC(pDC);
bmp.m_hObject=(HBITMAP)::LoadImage(NULL,"background.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//装载位图
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(rect,RGB(255,255,255));
bmp.GetBitmap(&bmpInfo);
CBitmap *pOldbmp=dcBit.SelectObject(&bmp);
pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcBit,0,0,SRCCOPY);//一般显示*/

dcBit.SelectObject(pOldbmp);
}
编译能通过,但运行后到bmp.GetBitmap(&bmpInfo);报错,过不去,为什么呢,

解决方案 »

  1.   

    看看你定义的bmpInfo是否正确,是不是BITMAP类型
      

  2.   

    void CMainView::OnDraw(CDC* pDC)
    { CDC dcBit;
    CBitmap bmp;

    dcBit.CreateCompatibleDC(pDC);
    bmp.m_hObject=(HBITMAP)::LoadImageNULL,".\\res\\background.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//装载位图
    CRect rect;
    GetClientRect(&rect);
    pDC->FillSolidRect(rect,RGB(255,255,255));
    bmp.GetBitmap(&bmpInfo);
    CBitmap *pOldbmp=dcBit.SelectObject(&bmp);
    pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcBit,0,0,SRCCOPY);//一般显示*/

    dcBit.SelectObject(pOldbmp);
    }改了之后可以了,也能显示,但有内存泄漏,用BOUNDSCHECKER检查还是说bmp.GetBitmap(&bmpInfo);有问题
      

  3.   

    不要直接用bmp.m_hObject来访问,你这里用Attach比较合适。