HBITMAP HBM = loadImage函数返回null



我在屏幕上显示位图的问题。当我补充并运行它不显示任何内容时,我尝试逐步调试,发现以下代码是问题。

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();

相关内容

  • 没有找到相关文章

最新更新