我在程序里写了如下几行:
CBitmap bmp;
CString str = "E:\\1.bmp";
bmp.LoadBitmap(str);运行后图片不能载入,返回1814(找不到映像文件中指定的资源名)的错误。
但使用bmp.LoadBitmap(IDB_BITMAP1);就可以。
我想用BOOL LoadBitmap( LPCTSTR lpszResourceName ),请各位指教,谢谢了!

解决方案 »

  1.   

    用LoadImage可以从文件中读取bmp文件,然后attach到Cbitmap上
      

  2.   

    agree to staticip
    CBitmap只能加装资源里的位图
      

  3.   

    设lpszName 是你要加载的位图路径,pDC是显示DC
    则:
        const char* lpszName = "c:\\test.bmp";
        HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL,
                                                lpszName,
                                                IMAGE_BITMAP,
                                                 0,
                                                 0,
                                                  LR_LOADFROMFILE);
        CBitmap bmp;
        bmp.Attach(hBitmap);
        BITMAP bm;
        bmp.GetBitmap(&bm);
        CDC memDC;
        memDC.CreateCompatibleDC(pDC);
        CBitmap *pOldBmp = memDC.SelectObject(&bmp);
        pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&memDC,0,0,SRCCOPY);    memDC.SelectObject(pOldBmp);
    ---------------------------------------
    void CTestListDlg::OnPaint() 
    {
        CPaintDC dc(this); // device context for painting
        
        // TODO: Add your message handler code here
        HBITMAP hBitmap;    hBitmap=(HBITMAP)LoadImage(
          ::AfxGetInstanceHandle(),"res\\background.bmp",
          IMAGE_BITMAP,0,0,
          LR_LOADFROMFILE|LR_CREATEDIBSECTION);
        ASSERT( hBitmap);
        HBITMAP hOldBitmap;
        
        CDC MemDC;
       CRect rect;
       CDC *pDC=this->GetDC();
       MemDC.CreateCompatibleDC(pDC);
       GetClientRect(rect);
       hOldBitmap=(HBITMAP)MemDC.SelectObject(hBitmap);
       pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
       MemDC.SelectObject(hOldBitmap);    // Do not call CDialog::OnPaint() for painting messages
    }
      

  4.   

    CGraphDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);        
        HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, _T          ("c:\\backgrnd.bmp"), IMAGE_BITMAP,
                        0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
        m_bitmaptest->Attach(hBitmap);   
        if(hBitmap==NULL)
            MessageBox("error");
        BITMAP bm1;
        m_bitmaptest->GetObject(sizeof(BITMAP),&bm1);
        CDC dcImage;
        if (!dcImage.CreateCompatibleDC(pDC))
            return ;
        CBitmap* pOldBitmap = dcImage.SelectObject(m_bitmaptest);  
        CRect rect_t1;    
        GetClientRect(&rect_t1);    
    for(int wide_x=0;wide_x<rect_t1.right;wide_x+=bm1.bmWidth) 
       for(int wide_y=0;wide_y<rect_t1.bottom;wide_y+=bm1.bmHeight)
        {
            pDC->BitBlt( wide_x, wide_y, bm1.bmWidth, bm1.bmHeight, &dcImage,    0, 0, SRCCOPY );
        }
        dcImage.SelectObject(pOldBitmap);
        DeleteObject(m_bitmaptest->Detach());
      

  5.   

    用LoadImage可以从文件中读取bmp文件,然后attach到Cbitmap上
    MYBUTTON.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(ID));
    CbitmapButton::LoadBitmaps(…);