죄송합니다. 중복되어 있지만 다른 곳에서 답변을 찾을 수 없습니다. 나는 단순히 런타임 동안 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의 올바른 조언] (http://stackoverflow.com/a/10661197/366904)에 따르면 코드가 올바르게 작동합니다. 25MB의 비트 맵 파일을로드하려고 시도해도 사용자가 설명하는 오류를 깨거나 재현 할 수 없습니다. 그리고 리소스 힙 크기를 늘리는 것과 같이 열심히하지 않았습니다. 이것은 VS 2010 마법사로 만든 깨끗한 스크래치 Win32 프로젝트에 Windows 7을 표준 설치합니다. 이와 비슷한 깨끗한 프로젝트에서 이것을 재현 할 수 있습니까? –
LoadImage의 반환 값을 테스트하고 GetLastError를 호출하면 0 일 경우에만 테스트해야합니다. 오류가 없으면 API가 SetLastError를 호출하지 않았을 수 있으므로 8의 오류 코드는 호출 체인의 초기에 다른 API 호출에서 왔을 수 있습니다. – Gunner
페인트에 bmp 파일을로드 할 수 있습니까? 어쩌면 그것은 손상되어 10 억 픽셀의 키가된다고 말합니다. 그것은 "메모리 부족"오류를 설명합니다. –