我试图使用LoadImage()加载bmp图像以显示它,但我找不到加载图像的方法 . 这是一些代码:
编辑
如上所述,这是一个可运行的例子
#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设置为主要的HINSTANCE,但没有任何成功 .
我在main的开头运行了一次这段代码 .
谢谢你的帮助,我希望我误解了它是如何工作的