1. 程式人生 > >CBitmap程式中動態載入 本地檔案上的BMP圖片資源

CBitmap程式中動態載入 本地檔案上的BMP圖片資源

 HBITMAP   bitmap;
 BITMAP    bm;
 bmBkgnd.Detach();
 bitmap = (HBITMAP)::LoadImage(NULL,strPath, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE|LR_DEFAULTSIZE);
 
 //bitmap = (HBITMAP)::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_WAITPIC));
 
 bmBkgnd.Attach(bitmap);
 pOldBitmap = memdc.SelectObject(&bmBkgnd);
 bmBkgnd.GetBitmap(&bm);
////////////////////////////////////////////////////////////////
 下面分MFC和SDK兩種方式討論LoadBitmap的問題。
    1、如果採用MFC方式,可以使用 AfxGetResourceHandle儲存當前的資原始檔控制代碼,即你說的hInst。也可以使用AfxSetResourceHandle設定資源DLL的控制代碼,如:
     hDll=LoadLibrary("ResourceDLL.dll");
     if(hDll==NULL)
     AfxMessageBox("Can't Load the library");
     else AfxMessageBox("success");
     AfxSetResourceHandle(hDLL);
     ...
    }
    這樣以後你再使用LoadBitmap時,圖片將來自你的資源DLL,而不是.exe檔案。如果你在程式中還要使用.exe中的資源,你需要在 AfxSetResourceHandle之前,先使用 AfxGetResourceHandle儲存當前的資原始檔控制代碼。
    2、SDK方式。在WinMain中,第一個引數都是HINSTANCE。你也可以LoadLibrary獲得的控制代碼。
    我估計你要從硬碟上讀取圖片,可以參考QA000913 "如何開啟、讀入、顯示和儲存BMP檔案"、QA002959 "TC中如何程式設計裝入並顯示一幅BMP,PCX,JPG等點陣圖圖象"。