Почему 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" формат, но передавая целое число. Это неопределенное поведение. Если вы посмотрите на возвращаемое значение в отладчике, вы, вероятно, обнаружите, что оно не равно нулю.

Другие вопросы по тегам