CBitmap bitmap;
HBITMAP hbm;
//pDoc->GetFileName()是一个BMP文件的名称(包括路径)
hbm = (HBITMAP)LoadImage(NULL, pDoc->GetFileName(), IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); bitmap.Attach(hbm);
BITMAP bm;
bitmap.GetBitmap((tagBITMAP*)&bm);//好像错在此处
bitmap.SetBitmapDimension(bm.bmWidth,bm.bmHeight); CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC))
return; CBitmap *oldbmp = dcImage.SelectObject(&bitmap); CSize size = bitmap.GetBitmapDimension();
pDC->BitBlt(0,0,size.cx,size.cy ,&dcImage,50,50,SRCCOPY); dcImage.SelectObject(oldbmp);
DeleteObject(bitmap);

解决方案 »

  1.   

    bitmap.GetBitmap((tagBITMAP*)&bm);//好像错在此处
                      ~~~~~~~~~~为什么要强制转换阿?
    Getbitmap的形参本来就应该是BITMAP型指针阿
      

  2.   

    这里我只是试一下啦,bitmap.GetBitmap(&bm);也是错的.
      

  3.   

    呵呵,好像不能用Getbitmap,它是把bitmap里的值赋给bm
    试试我这段代码...
    用的是LoadImage读外部文件//显示外部的BMP文件
    HBITMAP hbitmap;
    hbitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"SAMPLE.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    ASSERT(hbitmap);
    HBITMAP OldBitmap;
    CDC memDC2;
    CRect rect;
    memDC2.CreateCompatibleDC(pDC);
    GetClientRect(rect);
    OldBitmap=(HBITMAP)memDC2.SelectObject(hbitmap);
    //显示位图
    pDC->BitBlt(240,50,rect.Width()-20,rect.Height()-20,&memDC2,0,0,SRCCOPY);
    pDC->TextOut(250,150,"显示外部BMP文件");
    memDC2.SelectObject(OldBitmap);
      

  4.   

    解决了,呵,原来开始运行的时候,pDoc->GetFileName()是空,我判断后就没问题了.