很抱歉,如果這是重複的,但我無法在別處找到答案。我只是試圖在運行期間使用WINAPI的LoadImage()函數加載圖像。我收到錯誤代碼(8),表示沒有足夠的存儲空間(發現錯誤代碼爲here)。從文件錯誤Win32 LoadImage()
文件比較小(2.5KB),所以我不知道是否有問題,我的代碼:
void OnCreate()
{
...
HBITMAP hbmDeck = (HBITMAP)LoadImage(hInstance, L"standard.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
DWORD err = GetLastError();
HBITMAP hbmT = SelectBitmap(hdc, hbmDeck);
if(!hbmT)
{
MessageBox(NULL, L"Failed to LoadImage - 'hbmDeck'", L"OnCreate()", MB_OK);
PostMessage(hwnd, WM_DESTROY, NULL, NULL);
}
...
}
關注[Gunner's correct advice](http://stackoverflow.com/a/10661197/366904),你的代碼對我來說工作得很好。我不能讓它破壞或重現你描述的錯誤,甚至試圖加載一個25 MB的位圖文件。而且我還沒有像增加資源堆的大小那樣做任何事情。這是由VS 2010嚮導創建的乾淨臨時Win32項目中的Windows 7的標準安裝。你可以在一個類似的清潔項目中重現這一點嗎? –
你也應該只測試LoadImage的返回值,如果它是0,你應該調用GetLastError。如果沒有錯誤,那麼API可能沒有調用SetLastError,所以錯誤代碼8可能來自調用鏈中較早的其他API調用。 – Gunner
你可以加載你的BMP文件到Paint中嗎?也許它損壞了,並說它高度是十億像素。這將解釋「內存不足」錯誤。 –