HBITMAP bitmap;bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"SAMPLE.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT(bitmap);

解决方案 »

  1.   

    HBITMAP m_hBmp1;
    m_hBmp1 = (HBITMAP)LoadImage(NULL, "c:\\123.bmp", IMAGE_BITMAP, 0, 0, 
    LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); 绘制
    DrawBitmap( &dc, m_hBmp1, NULL, 0, 0 );
    void DrawBitmap( CDC *pDC, HBITMAP hBitmap, HPALETTE hPal, int xDest, int yDest )
    {
    // Get logical coordinates
    BITMAP bm;
    ::GetObject( hBitmap, sizeof( bm ), &bm );
    CPoint size( bm.bmWidth, bm.bmHeight );
    pDC->DPtoLP(&size); CPoint org(0,0);
    pDC->DPtoLP(&org); // Create a memory DC compatible with the destination DC
    CDC memDC;
    memDC.CreateCompatibleDC( pDC );
    memDC.SetMapMode( pDC->GetMapMode() );

    //memDC.SelectObject( &bitmap );
    HBITMAP hBmOld = (HBITMAP)::SelectObject( memDC.m_hDC, hBitmap );


    // Select and realize the palette
    if( hPal && pDC->GetDeviceCaps(RASTERCAPS) & RC_PALETTE)
    {
    SelectPalette( pDC->GetSafeHdc(), hPal, FALSE );
    pDC->RealizePalette();
    }
    pDC->BitBlt(xDest, yDest, size.x, size.y, &memDC, org.x, org.y, SRCCOPY); ::SelectObject( memDC.m_hDC, hBmOld );
    }
      

  2.   

    Method 1:
     HBITMAP CDandelionDlg::BufferToBITMAP(LPSTR path)
    {
    LPSTR p;
    DWORD size;
    CFile pf; pf.Open(path,CFile::modeRead);
    size=pf.GetLength();
    p=new char[size];
    pf.ReadHuge(p,size);
    pf.Close();
    HBITMAP hBmp;
    LPSTR hDIB,lpBuffer=p;
    LPVOID lpDIBBits;
    BITMAPFILEHEADER bmfHeader;
    DWORD bmfHeaderLen; bmfHeaderLen=sizeof(bmfHeader);
    strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);
    if(bmfHeader.bfType!=((WORD)('M'<<8)|'B'))return NULL;
    hDIB=lpBuffer+bmfHeaderLen;
    BITMAPINFOHEADER &bmiHeader=*(LPBITMAPINFOHEADER)hDIB;
    BITMAPINFO &bmInfo=*(LPBITMAPINFO)hDIB;
    int nColors=bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 1<<bmiHeader.biBitCount;
    if(bmInfo.bmiHeader.biBitCount>8)
    lpDIBBits=(LPVOID)((LPDWORD)(bmInfo.bmiColors+bmInfo.bmiHeader.biClrUsed)+
    ((bmInfo.bmiHeader.biCompression==BI_BITFIELDS) ? 3 : 0));
    else
    lpDIBBits=(LPVOID)(bmInfo.bmiColors+nColors);
    CClientDC dc(this);
    hBmp=CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS); delete[] p;
    return hBmp;
    }Method 2:
     CoInitialize(NULL);
     CComQIPtr<IPicture> ppic;
     PICTDESC pd;
     ZeroMemory(&pd,sizeof(PICTDESC));
     pd.cbSizeofstruct=sizeof(PICTDESC);
     pd.picType=PICTYPE_BITMAP;
     CFile pf;
     pf.Open("c:\\008.jpg",CFile::modeReadWrite);
     CArchive::bNoFlushOnDelete),sr(&sf,CArchive::store);
     CArchiveStream arcstream(&ar),src(&sr);
     OleLoadPicture((IStream*)(&arcstream),0, FALSE,IID_IPicture,(void**)&ppic);
     assert(ppic);
     
     RECT r;
     GetWindowRect(&r);
     CRect rect(r);
     long height,width;
     ppic->get_Height(&height);
     ppic->get_Width(&width);
     ppic->Render(::GetDC(0),rect.left,rect.top,rect.Width(),rect.Height(),0,height,width,-height,&rect);
     ppic.Release();
     CoUninitialize();
    //#include <assert.h>
    //#include <afxpriv2.h>
      

  3.   

    HBITMAP m_hBitmap;
    m_hBitmap=(HBITMAP)LoadImage(NULL,lpszImageFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    那个句柄只用来标识该在那个范围里读取,如果从磁盘文件读取,我就把她设为NULL
      

  4.   

    建议使用IPicture接口来读,正在研究这个接口。
      

  5.   

    BOOL LoadBitmap(LPCTSTR lpszResourceName);