Почему GetObject терпит неудачу здесь, когда lbvobject НЕДЕЙСТВИТЕЛЕН
GetObject()
документация говорит, что когда lpvObject
NULL, функция возвращает необходимое количество байтов. Но я получаю 0, которое является возвращаемым значением, когда оно терпит неудачу.
Я искал и пытался выяснить, что я делаю неправильно.
Я только что получил базовую настройку окна, используя WM_PAINT
сообщение:
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd, &ps);
HBITMAP hbmap;
hbmap = (HBITMAP) LoadImage(NULL, str_path, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
BITMAP bm;
HDC bmapmemory = CreateCompatibleDC(hdc);
SelectBitmap(bmapmemory, hbmap);
int a = GetObject(hbmap, sizeof(BITMAP), NULL);
BitBlt(hdc, 0, 0, 750, 750, bmapmemory, 0, 0, SRCCOPY);
char c[64];
sprintf_s(c, sizeof(c), "%f\n", a);
OutputDebugStringA(c);
DeleteDC(bmapmemory);
DeleteObject(bmap);
EndPaint(hwnd,& ps);
return 0;
}
Как я сказал, a
всегда 0, или сбой, для GetObject()
вызов функции.
1 ответ
Вы используете "%f"
формат, но передавая целое число. Это неопределенное поведение. Если вы посмотрите на возвращаемое значение в отладчике, вы, вероятно, обнаружите, что оно не равно нулю.