Windows GDI Context- LoadImage и GetLastError () - PullRequest
0 голосов
/ 31 октября 2011

При вызове LoadImage() на первых шагах моей программы возвращается NULL.Сразу после этого вызывается GetLastError(), и он неожиданно возвращает 0. Я удивляюсь, почему LoadImage() дает сбой, поскольку GetLastError() ясно показывает, что после сбойной функции не установлен код ошибки.Это фрагмент кода:

if ( (hbitmap = (HBITMAP) LoadImage(hThisInstance, MAKEINTRESOURCE(MY_BITMAP), 
                                    IMAGE_BITMAP, 0, 0, 
                                    LR_CREATEDIBSECTION)) == NULL) 
    printf("Last error: %d\n", GetLastError());

С HBITMAP hbitmap, HINSTANCE hThisInstance (аргумент WinMain) и MY_BITMAP допустимый битовый ресурс.

Ответы [ 2 ]

4 голосов
/ 08 августа 2013

Очевидно, LoadImage возвращает NULL и не устанавливает никаких ошибок, если есть проблема с форматом файла.

Копию растрового изображения, которое я пытался загрузить, можно найти здесь . Я создал его с помощью GIMP, который в текущей версии довольно глючит.

Решением было открыть файл в Paint и сохранить его снова. Теперь LoadImage загружает изображение без нареканий.

1 голос
/ 16 октября 2014

Я обнаружил точно такое же поведение с последней версией GIMP. Когда вы выполняете экспорт из Gimp, выберите кнопку «Параметры совместимости» [+] и установите флажок «Не записывать информацию о цветном пространстве», и растровое изображение будет загружено с помощью LoadImage. Редактировать: сейчас я вижу предварительный комментарий на этот счет, иначе я бы не стал писать!

...