Я пытаюсь нарисовать растровый файл в окне.Поэтому я использовал (HBITMAP) LoadImage (), и он возвращает NULL.Я использовал GetLastError, чтобы увидеть проблему, но она также возвращает 0.Я работаю над goorm ide (приложение для Windows).
case WM_CREATE:
{
hBitmap = (HBITMAP)LoadImage(GetModuleHandle(NULL), "image.bmp", IMAGE_BITMAP, 0, 0,
LR_DEFAULTSIZE | LR_LOADFROMFILE);
if(hBitmap == NULL){
DWORD errorCode = GetLastError();
if(errorCode != 0){
LPSTR messageBuffer = nullptr;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errorCode,
0,
(LPTSTR)&messageBuffer,
0,
NULL);
MessageBox(hWnd, messageBuffer, "hBitmap is NULL!" , MB_OK);
}else{
MessageBox(hWnd, "hBitmap is null but errorCode is 0", "???" , MB_OK);
}
}
BITMAP bm;
CHAR szBuffer[255];
GetObject(hBitmap, sizeof(BITMAP), &bm);
break;
}
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
MemDC=CreateCompatibleDC(hdc);
OldBitmap=(HBITMAP)SelectObject(MemDC, hBitmap);
bool isSuccess = BitBlt(hdc, 0,0,655,380,MemDC,0,0,SRCCOPY);
SelectObject(MemDC,OldBitmap);
DeleteObject(hBitmap);
DeleteDC(MemDC);
EndPaint(hWnd, &ps);
break;
}
Если я заменю «image.bmp» на «asdf.bmp» в коде, он говорит: «файла нет».поэтому я уверен, что он нашел файл, но, кажется, не работает правильно.когда я печатаю ширину и высоту растрового изображения, он показывает странное число (например, 12312321, -3453453).Я не могу найти в чем проблема.
Я тоже пробовал это: (из https://support.microsoft.com/en-us/help/158898/howto-how-to-use-loadimage-to-read-a-bmp-file)
hBitmap = (HBITMAP)LoadImage( NULL, "image.bmp", IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
Я отправлю полный код, если вы хотите.
https://ide -run.goorm.io / рабочее пространство / onMe язык = корь и тема = -Темный #
?