winapi的LoadImage()总是返回NULL

我试图使用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的开头运行了一次这段代码 .

谢谢你的帮助,我希望我误解了它是如何工作的

回答(0)