bool CDrawingBoardView::OnFileOpen()
{
//TODO: Add your command handler code here
    // m_strFileName = name;
CDC  dc;
CDC *pDC = GetDC();              //返回屏幕客户区句柄
if(!dc.CreateCompatibleDC(pDC))
return false;
CBitmap b;                        //封装一个位图,并提供对位图进行操作的成员函数
BITMAP  bm;                       //位图结构体 CString  path;
CFileDialog dlg(true,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()==IDOK)
{
path =dlg.GetPathName();
}
else 
return false;
HBITMAP  hbmp = (HBITMAP)LoadImage(NULL, path, IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);   //位图句柄
b.Attach(hbmp);       //附加位图到位图对象 b.GetBitmap(&bm);     
dc.SelectObject(&b);  //选入对象至设备
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dc, 0, 0, SRCCOPY);
         ReleaseDC(pDC);
         pDC=NULL;
return true;
}

解决方案 »

  1.   

    dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dc, 0, 0, SRCCOPY); 
    =============================
    这句什么意思啊?
    b.GetBitmap(&bm);    CCD memDC;
    memDC.CreateCompatibleDC(pDC);
    memDC.SelectObject(&b);
    dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY); 
    ReleaseDC(pDC);
    ReleaseDC(memDC); 
    pDC=NULL; 
      

  2.   

    HBITMAP hbmp=(HBITMAP)LoadImage(AfxGetInstanceHandle(),path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
      

  3.   

    看样子你的问题出在没有理解清楚BitBlt, 它的用途仅仅是拷贝或者缩放,而并不是显示;
    试试StretchDIBits
      

  4.   

    同意四楼 
     CDC *pDC=this->GetDC();
     this->m_Bitmap.LoadBitmap(IDB_BITMAP2);
     this->m_Bitmap.GetBitmap(&bm);
     m_MemDC.CreateCompatibleDC(pDC);
     CBitmap * pOldBitmap=m_MemDC.SelectObject(&m_Bitmap);
       pDC->BitBlt(point.x,point.y,bm.bmWidth,bm.bmHeight,&m_MemDC,0,0,SRCCOPY);
    (point.x,point.y,bm.bmWidth,bm.bmHeight,&m_MemDC,0,0,bm.bmWidth,bm.bmHeight,WHITENESS);
          
       m_MemDC.SelectObject(pOldBitmap);
       m_MemDC.DeleteDC();
      

  5.   

    dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dc, 0, 0, SRCCOPY); 这句有问题,自己复制自己,不出错就都很奇怪.
      

  6.   

    CCD memDC;
    memDC.CreateCompatibleDC(pDC);
    memDC.SelectObject(&b);
    dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, 0, 0, SRCCOPY);