CBitmap程式中動態載入 本地檔案上的BMP圖片資源
阿新 • • 發佈:2019-01-22
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等點陣圖圖象"。
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等點陣圖圖象"。