我创建了一个基于MFC Dialog模式的工程,然后写了如下代码:
 CDC* pDC = this->GetDC();
 BITMAP bm;
 ZeroMemory(&bm, sizeof(BITMAP));
 int a;
 a = pDC->GetCurrentBitmap()->GetBitmap(&bm); //MSDN上说返回值如果为0则表示调用失败,而我这里的返回值确实是0,这是怎么回事,还请高人指点!!!

解决方案 »

  1.   

    当前CDC中没有位图对象,所以导致失败。
      

  2.   

    那为什么我调用pDC->LineTo涵数还能做图呢?
      

  3.   

    .........是不是要先
    CBitmap MemBitmap;
    pdc->SelectObject(&MemBitmap);
    然后才能操作GetBitmap
      

  4.   

    嗯,忘了,MemBitmap还要初始化一下.
      

  5.   

    void CNyuRyokuDlg::OnPaint() 
    {
    HBITMAP hBitmap;
    BITMAP BM;
    CDC MemDC;
    CClientDC ClientDC(this);
    MemDC.CreateCompatibleDC(&ClientDC);
    hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),strPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    MemDC.SelectObject(&hBitmap);
    ::GetObject(hBitmap,sizeof(BM),&BM);
    //使用格式与方法一同
    //ClientDC.BitBlt(0,0,BM.bmWidth,BM.bmHeight,&MemDC,0,0,SRCCOPY);
    //
    CStatic *pStatic = (CStatic *)GetDlgItem(IDC_BMPSHOW) ;
    pStatic=((CStatic *)GetDlgItem(IDC_BMPSHOW));   //tu是CStatic *;
        pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
    int nLength = m_Path.GetLength();
    char* sz=new char(nLength);
    sz=m_Path.GetBuffer(0);
        pStatic->SetBitmap(hBitmap);
    }
      

  6.   

    void CMy11Dlg::OnOK() 
    {
    CFileDialog dlg(TRUE,"*.bmp",NULL,NULL,"ホサヘシホトシ(*.bmp)||)");
    if(dlg.DoModal()==IDOK)
    {
    strPath = dlg.GetPathName();
    Invalidate();
    }
    }
      

  7.   

    楼上几位说得好,
    我觉得你错误也是在设备上下文中没有选入位图造成的:
    CBitmap pBitmap,*pOldBitmap;
    BITMAP bm;
    if(!Bitmap.LoadBitmap(AfxGetInstanceHandle(),lpszBitmap))
    return FALSE;
    CDC* pDC = this->GetDC();
    CDC MemDC;
    MemDC.CreateCompatibleDC(pDC);
    pOldBitmap=(CBitmap*)MemDC.SelectObject(&Bimtap);
     BITMAP bm;
     //ZeroMemory(&bm, sizeof(BITMAP));
     //int a;
     pDC->GetCurrentBitmap()->GetBitmap(&bm);
     //也可以用Bitmap.GetBitmap(&bmj);
    //也可以用Bitmap.GetObject(sizeof(BITMAP),&bm);
    pDC->Bitblt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
    MemDC.SelectObject(pOldBitmap);