gpt4 book ai didi

c++ - HBITMAP hbm = LoadImage函数返回NULL

转载 作者:行者123 更新时间:2023-12-02 10:24:55 26 4
gpt4 key购买 nike

我在屏幕上显示位图时遇到问题。当我编译并运行不显示任何内容时,尝试逐步调试,发现下面的代码是问题所在。

HBITMAP hbm = (HBITMAP)LoadImage(hInstance, 
"C:\\Users\\Jemma\\Desktop\\Maze Game\\Assets\\TILE_01.bmp",
IMAGE_BITMAP,
SWidth, SHeight,
LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if (hbm == NULL || m_Surface == NULL)
{
DWORD lastError = GetLastError();
return 1;
}

当我首先在autos下进入此功能时,它会说hbm = 0xcccccccc {unused = ???}(我假设这是由于未初始化,因为我上线时出现了此信息,所以我没有介入其中在这一点上-只是以为我会以防万一,如果我进入这一行,它说hbm = NULL,并且GetLastError函数返回0,我已经读过它意味着函数成功了。我尝试传递NULL而不是hInstance,尝试将文件名作为LPCSTR szFileName传递给我-我将其声明为LPCSTR szFileName(“C:\ Users \ Jemma \ Desktop \ Maze Game \ Assets \ TILE_01.bmp”) 。
绝对不知道下一步该怎么做。任何帮助,将不胜感激。

最佳答案

首先,请确保您的图片是真实的bmp文件,并且可以使用图片查看器打开。然后尝试使用LoadImage加载该HBITMAP:

const char* filename = "C:\\Users\\Jemma\\Desktop\\Maze Game\\Assets\\TILE_01.bmp";
HBITMAP bmp = (HBITMAP)LoadImage(NULL, filename,
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
if (hbm == NULL)
{
DWORD lastError = GetLastError();
return 1;
}

注意,当使用 LR_DEFAULTSIZE时,您需要使用0,0作为大小,从文件加载时,您也需要使用 LR_LOADFROMFILE。所有这些都在 documentation of LoadImage function中提到。

使用调试器逐步调试时,如果遇到意外情况,则需要检查 GetLastError。如果您要逐步使用VS调试器,则只需在监视窗口中添加 @err,您将始终看到最后一个错误,而无需更改代码。您也可以将其添加为 @err,hr,它将为您显示所发生错误的可读描述。

关于c++ - HBITMAP hbm = LoadImage函数返回NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com