在SDI程序中,想显示一个位图,代码如下:
void CBitDemoView::OnDraw(CDC* pDC)
{
CBitDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
BITMAP bmpInfo;
bmp.GetObject(sizeof(bmpInfo),&bmpInfo);
CBitmap *pbmpOld;
pbmpOld=pDC->SelectObject(&bmp);
pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcComp,0,0,SRCCOPY);
pDC->SelectObject(pbmpOld);

}可是却无任何显示,这是为什么呢????????????

解决方案 »

  1.   

    改成我这个吧    CDC memDC;//内存设备场景
        CBitmap cb; //位图类对象
        CRect rect;
        GetWindowRect(&rect);
        cb.LoadBitmap (IDB_BITMAP1);//载入资源
        memDC.CreateCompatibleDC (pDC);//创建内存设备上下文
        CBitmap *oldbitmap=NULL;
        oldbitmap=memDC.SelectObject (&cb);//将位图选入当前设备场景
        pDC->BitBlt (0,0,rect.Width(),rect.Height(),&memDC,-200,-200,SRCCOPY);//将内存场景的图象拷贝到屏幕上
        memDC.SelectObject (oldbitmap);
      

  2.   

    你的错是 
    pbmpOld=pDC->SelectObject(&bmp);应该改成:
    pbmpOld=dcComp.SelectObject(&bmp);
      

  3.   

    pbmpOld=pDC->SelectObject(&bmp);
    pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcComp,0,0,SRCCOPY);
    pDC->SelectObject(pbmpOld);
    ============================>
    pbmpOld=dcComp.SelectObject(&bmp);
    pDC->BitBlt(0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,&dcComp,0,0,SRCCOPY);
    dcComp.SelectObject(pbmpOld);