Ошибка файла не найдена с LoadImage () (Windows) - PullRequest
0 голосов
/ 08 июля 2010

РЕДАКТИРОВАТЬ: я добавил еще несколько строк программы в фрагмент кода ниже.

У меня есть следующая строка кода в программе

BITMAP BMP;
HBITMAP hBMP;

hBMP = (HBITMAP)LoadImage(GetModuleHandle(NULL), "Test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
if (!hBMP) return 1;

GetObject(hBMP, sizeof(BMP), &BMP);

и когда язапустить программу, она вылетает.Я использовал GetLastError (), который возвратил 2 / FILE_NOT_FOUND, но файл («Test.bmp») находится в папке .exe.Может кто-нибудь указать, что не так со строкой кода (или если ошибка не в этой строке)?

Ответы [ 4 ]

3 голосов
/ 08 июля 2010

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

1 голос
/ 08 июля 2010

Возможно, вы работаете в отладчике, как и в IDE? Текущий рабочий каталог может отличаться от того, что вы думаете.

РЕДАКТИРОВАТЬ: Используя Process Explorer из sysinternals, вы можете видеть, что текущий рабочий каталог - это файл, содержащий файл решения, если вы используете Visual Studio, а не каталог, в котором создаются ваши двоичные файлы.

0 голосов
/ 08 июля 2010

Ваше изображение живет по пути TEMP. Я считаю, что по мере выполнения ...

Environment :: GetEnvironmentVariable ("TEMP") + "\ Button.bmp";

0 голосов
/ 08 июля 2010

вы должны попытаться использовать полный путь к вашему приложению.

Кроме того, аргументы main () содержат текущий путь приложения, поэтому вы можете добавить его в строку.

...