Win32应用程序。HBITMAP LoadImage无法加载任何内容

用户名

我正在编写一个函数,可以快速绘制正在制作的游戏的菜单图像。我可以很好地绘制背景和文本块,但是在屏幕上创建位图图像时遇到问题

bool menu::drawMenu(PAINTSTRUCT ps)
{
HWND hWnd = GetActiveWindow();
HDC hdc = GetDC(hWnd), hdcMem;

//Draw a new background

HPEN blackPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
HBRUSH blackBrush = CreateSolidBrush(RGB(0, 0, 0));
SelectObject(hdc, blackPen);
SelectObject(hdc, blackBrush);
Rectangle(hdc, 0, 0, 1080, 720);

//insert selection text

TextOut(hdc, 30, 0, L"New Game", 8);
TextOut(hdc, 30, 30, L"Exit Game", 9);

//draw arrow sprite

HBITMAP arrow = (HBITMAP)LoadImage(NULL, L"C:\\Users\\Tim\documents\\visual studio 2013\\Projects\\BoulderBisque\\BoulderBisque\\arrow.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    DWORD lastError = GetLastError();
if (arrow == NULL)
{
    TextOut(hdc, 0, 60, L"Image Load Failed", 17);
    return false;
}
hdcMem = CreateCompatibleDC(hdc);
if (hdcMem == NULL)
{
    TextOut(hdc, 0, 90, L"Memory Creation Failed", 22);
    return false;
}
SelectObject(hdcMem, arrow);
BitBlt(hdc, 0, choice * 30, 16, 16, hdcMem, 0, 0, SRCCOPY);

//cleanup

ReleaseDC(hWnd, hdc);
DeleteDC(hdcMem);

return true;
}

截至目前,箭头为NULL,我得到了“加载图像失败”文本框。我正在使用arrow.bmp的相对路径,我也尝试过使用完整路径,但这也不起作用。

您可能已经注意到此功能不在WndProc之外。其他一切都很好。我也尝试在其中运行所有内容,但arrow.bmp会加载。

我做错了什么导致arrow.bmp为NULL?我还有其他计划以类似方式运行的方法,因此,让此功能运行确实会有很大帮助。

编辑*每当我给出完整的路径名时,它仍然无法加载。难道这不是适合SO的代码吗?这是我的第一个问题

编辑**附加的'/'尚未解决问题。

编辑***使用GetLastError,我发现错误代码为2,ERROR_FILE_NOT_FOUND

戴维·赫弗南

您的问题的早期版本检查了的返回值,LoadImage但仅此而已。文件说:

如果函数失败,则返回值为NULL要获取扩展的错误信息,请致电GetLastError

因此,如果函数失败,请调用GetLastError以找出原因。这样做时,您将获得错误代码ERROR_FILE_NOT_FOUND这是非常确定的。您指定的文件名不存在。

请注意,问题的最新更新中的代码是GetLastError无条件调用的这是一个错误,在Stack Overflow上经常看到这样的错误。该文档仅告诉您GetLastError在呼叫LoadImage失败时呼叫如果LoadImage成功调用,则返回值byGetLastError是没有意义的。Win32中的错误处理在很大程度上与其处理方式相同LoadImage,但并非总是如此。因此,您必须非常仔细地阅读文档。


也许代替

C:\\Users\\Tim\documents\\...

你的意思是

C:\\Users\\Tim\\documents\\...

好的,现在您的路径正确了。要调用LoadImage的回报NULL,但GetLastError不再是有益的和回报ERROR_SUCCESS本身就是怪异的。

我认为问题在于您的图片使用了LoadImage无法理解的格式我拿了您的.bmp文件,将其加载到Paint.net中,然后重新保存。完成该操作后,重新保存的图像将成功加载。


与其尝试从文件中加载它,不如将图像链接为资源并以这种方式加载它,将更加有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Win32应用程序。HBITMAP LoadImage无法加载任何内容

来自分类Dev

应用程序无法从WinSxS加载Win32程序集

来自分类Dev

DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

来自分类Dev

在python中加载DLL时出错,不是有效的Win32应用程序

来自分类Dev

'matplotlib'ImportError:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

DLL加载失败-不是有效的Win32应用程序-使用NumPy

来自分类Dev

Python:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

来自分类Dev

DLL加载失败-不是有效的Win32应用程序-使用NumPy

来自分类Dev

PHP加载错误:%1不是有效的Win32应用程序。

来自分类Dev

应用程序无法在Windows 2003中以Win32模式运行

来自分类Dev

无法在VS 2013,Windows 8.1中创建Win32控制台应用程序

来自分类Dev

应用程序无法在Windows 2000中以WIN32模式运行

来自分类Dev

针对Win32 x64编译后,Electron应用程序将无法打开

来自分类Dev

Win32应用程序中的WinHttpReadData无法正常工作

来自分类Dev

无法使用GCC从MSDN编译Win32应用程序的示例

来自分类Dev

应用程序无法在Windows 2003中以Win32模式运行

来自分类Dev

Win32应用程序中的窗口无法正常关闭

来自分类Dev

无法加载动态库php_sqlsrv_7_nts.dll不是有效的Win32应用程序

来自分类Dev

无法加载 rJava.dll - 不是有效的 Win32 应用程序 - 安装 ReporteRsjars 时

来自分类Dev

用Nuitka编译任何Python程序后,我得到“不是有效的win32应用程序”错误

来自分类Dev

IOException:无法运行程序:CreateProcess错误= 193,%1不是有效的Win32应用程序

来自分类Dev

IOException:无法运行程序:CreateProcess错误= 193,%1不是有效的Win32应用程序

来自分类Dev

matplotlib 1.3.0 ImportError:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

python cython ImportError:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

cx-freeze“ ImportError:DLL加载失败:%1不是有效的Win32应用程序”

来自分类Dev

ImportError:DLL加载失败:%1不是_imaging模块的有效Win32应用程序

来自分类Dev

python cython ImportError:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

如何使用C#访问UI Spy无法看到的元素以自动化Win32应用程序

Related 相关文章

  1. 1

    Win32应用程序。HBITMAP LoadImage无法加载任何内容

  2. 2

    应用程序无法从WinSxS加载Win32程序集

  3. 3

    DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

  4. 4

    在python中加载DLL时出错,不是有效的Win32应用程序

  5. 5

    'matplotlib'ImportError:DLL加载失败:%1不是有效的Win32应用程序

  6. 6

    DLL加载失败-不是有效的Win32应用程序-使用NumPy

  7. 7

    Python:DLL加载失败:%1不是有效的Win32应用程序

  8. 8

    DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

  9. 9

    DLL加载失败-不是有效的Win32应用程序-使用NumPy

  10. 10

    PHP加载错误:%1不是有效的Win32应用程序。

  11. 11

    应用程序无法在Windows 2003中以Win32模式运行

  12. 12

    无法在VS 2013,Windows 8.1中创建Win32控制台应用程序

  13. 13

    应用程序无法在Windows 2000中以WIN32模式运行

  14. 14

    针对Win32 x64编译后,Electron应用程序将无法打开

  15. 15

    Win32应用程序中的WinHttpReadData无法正常工作

  16. 16

    无法使用GCC从MSDN编译Win32应用程序的示例

  17. 17

    应用程序无法在Windows 2003中以Win32模式运行

  18. 18

    Win32应用程序中的窗口无法正常关闭

  19. 19

    无法加载动态库php_sqlsrv_7_nts.dll不是有效的Win32应用程序

  20. 20

    无法加载 rJava.dll - 不是有效的 Win32 应用程序 - 安装 ReporteRsjars 时

  21. 21

    用Nuitka编译任何Python程序后,我得到“不是有效的win32应用程序”错误

  22. 22

    IOException:无法运行程序:CreateProcess错误= 193,%1不是有效的Win32应用程序

  23. 23

    IOException:无法运行程序:CreateProcess错误= 193,%1不是有效的Win32应用程序

  24. 24

    matplotlib 1.3.0 ImportError:DLL加载失败:%1不是有效的Win32应用程序

  25. 25

    python cython ImportError:DLL加载失败:%1不是有效的Win32应用程序

  26. 26

    cx-freeze“ ImportError:DLL加载失败:%1不是有效的Win32应用程序”

  27. 27

    ImportError:DLL加载失败:%1不是_imaging模块的有效Win32应用程序

  28. 28

    python cython ImportError:DLL加载失败:%1不是有效的Win32应用程序

  29. 29

    如何使用C#访问UI Spy无法看到的元素以自动化Win32应用程序

热门标签

归档