Я пытался загрузить изображение bmp, используя LoadImage () для его отображения, но я просто не могу найти способ загрузить изображение.Вот некоторый код:
РЕДАКТИРОВАТЬ
, как предлагается, вот работоспособный пример
#include <windows.h>
#include <iostream>
#include <fstream>
std::string GetLastErrorAsString()
{
//Get the error message, if any.
DWORD errorMessageID = ::GetLastError();
if (errorMessageID == 0)
return std::string(); //No error message has been recorded
LPSTR messageBuffer = nullptr;
size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
std::string message(messageBuffer, size);
//Free the buffer.
LocalFree(messageBuffer);
return message;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int iShow) {
std::ofstream file("output.txt");
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"C:\\yes.bmp", IMAGE_BITMAP, 300, 300, LR_LOADFROMFILE);
if (hBitmap == NULL) {
file << "error: " << GetLastErrorAsString().c_str() << std::endl;
return 1;
}
else {
file << "success." << std::endl;
}
return 0;
}
И этот результат всегда равен NULL.Если я введу неправильное имя файла, сообщение об ошибке будет The system cannot find the file specified.
, но если имя правильное, сообщения об ошибке просто не будет.
Я попытался сохранить файл bmp в 24 и 32 битахЯ играл с флагами LR_
, это ничего не меняет.
Я также пытался установить HINSTANCE на основной, но безуспешно.
Я запускаю этот код один раз вначало основного.
Спасибо за вашу помощь, надеюсь, я просто неправильно понял, как это работает