我在屏幕上显示位图的问题。当我补充并运行它不显示任何内容时,我尝试逐步调试,发现以下代码是问题。
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 = 0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccced = ???}(我假设它是由于我登上行时就没有初始化的,所以我没有此时介入了这一点 - 只是以为我将其放入Incase中(,在我进入这一行后,它说HBM = null,而GetlasterRor函数返回0,我阅读的这意味着功能是成功的。我已经尝试通过null而不是hinstance,我尝试将文件名作为lpcstr szfileName传递 - 我将其称为lpcstr szfilename(" c: users users jemma jemma desktop desktop saze saze assets aistets tile_01.bmp"(。绝对不知道接下来要做什么。对此的任何帮助将不胜感激。
首先,请确保您的图像是真实的BMP文件,并且可以使用Image Viewer打开。然后尝试使用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
。所有这些都在加载图函数的文档中提到。
在使用调试器踏上一些意外情况时,您需要检查Getlasterror。如果您正在使用VS调试器踏上踏板,则只需在手表窗口中添加@err
,您将始终在不更改代码的情况下看到最后一个错误。您还可以将其添加为@err,hr
,它将显示您对发生错误的可读描述。
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 (bmp== NULL)
{
DWORD lastError = GetLastError();
return 1;
}
I am using the same code as above mentioned but LoadImage() is returning NULL and getting lasterror =2 , even i am sure file is already there from belowcode:
string filePath = "D:\ACC_car_Ego.bmp";
if (boost::filesystem::exists(filePath)) // does filePath actually exist?
DWORD lastError = GetLastError();
else
DWORD lastError1 = GetLastError();