Cpp LoadImage проблема - PullRequest
       12

Cpp LoadImage проблема

0 голосов
/ 08 марта 2019

За последние пару дней я пытался собрать основной шахматный проект, который я размещаю на своей странице в github. Однако я столкнулся с проблемой устаревшей загрузки и рисования растровых изображений WinApi. Например, когда я пытаюсь загрузить растровое изображение из того же каталога, что и файлы проекта, например,

drawingClass.Piece = (HBITMAP) LoadImage (NULL, "Black_Pawn.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

Функция LoadImage возвращает ноль, что делает невозможным рисование растрового изображения. Я не уверен, есть ли проблема при его активации, или, возможно, я делаю что-то совершенно не так. У меня обычно таких проблем нет, поэтому переход к Stackoverflow - мой последний вариант.

О, и я знаю, что графическая библиотека WinApi устарела, а что нет, и нет, я не планирую привлекать сторонние библиотеки, такие как SFML. Кроме того, эти API должны выполнить нечто подобное тому, что я пытаюсь сделать на более низком уровне.

Отладчик ясно показывает проблему здесь.

В ответ на ответы (поскольку при переполнении стека комментарии не длиннее 400 символов):

Пробовал абсолютный путь. Неудачно. В терминах «минимального, полного и проверяемого примера» все необходимые компоненты есть. Если вы хотите воспроизвести проблему для себя, просто запустите предоставленный фрагмент кода. Я не уверен, почему именно это не работает так, как должно, и это беспокоит меня. Следующие были проверены.

Обратите внимание, что приведение необходимо, поскольку LoadImage предоставляет РУЧКУ по умолчанию.

Абсолютный путь:

drawingClass.Piece = (HBITMAP) LoadImage (NULL, _T ("C: \ Users \ имя пользователя \ source \ repos \ имя пользователя \ Chess \ Chess \ Chess \ Black_Pawn." bmp "), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

Относительный путь:

drawingClass.Piece = (HBITMAP) LoadImage (NULL, _T ("Black_Pawn.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

LoadImageA:

drawingClass.Piece = (HBITMAP) LoadImageA (hinst_current, "Black_Pawn.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

LoadImageW:

drawingClass.Piece = (HBITMAP) LoadImageW (hinst_current, L "Black_Pawn.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

И проблема сохраняется.

...