c++ - Windows GDI 上下文 - LoadImage 和 GetLastError()

标签 c++ winapi gdi

在我的程序的第一步中调用 LoadImage() 返回 NULL。就在它之后,GetLastError() 被调用,并且它出人意料地返回了 0。 我想知道为什么 LoadImage() 会失败,因为 GetLastError() 清楚地表明在失败的函数之后没有设置错误代码。 这是代码片段:

if ( (hbitmap = (HBITMAP) LoadImage(hThisInstance, MAKEINTRESOURCE(MY_BITMAP), 
                                    IMAGE_BITMAP, 0, 0, 
                                    LR_CREATEDIBSECTION)) == NULL) 
    printf("Last error: %d\n", GetLastError());

使用 HBITMAP hbitmap、HINSTANCE hThisInstance(WinMain 的参数)和 MY_BITMAP 一个有效的位图资源。

最佳答案

显然,当文件格式有问题时,LoadImage 返回 NULL 并且不会设置任何错误。

可以找到我试图加载的位图拷贝 here .我使用 GIMP 创建它,它在当前版本中有很多错误。

解决方案是在“画图”中打开文件并再次保存。现在 LoadImage 加载图像,没有任何提示。

关于c++ - Windows GDI 上下文 - LoadImage 和 GetLastError(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947560/

相关文章:

c++ - 抽象类上未解析的外部符号

c - 使用 while(1) 循环时如何降低 CPU 使用率达到 100%

c# - 如何从回收站中恢复文件

c++ - 最大化的 WS_POPUP 窗口位于任务栏前面

c - 什么是 Windows DIB?

c++ - 按值或 const 引用传递函数?

c++ - 子类对象作为虚函数的参数

c++ - 如何自定义工具提示的外观? (C++ WinAPI)

c++ - MFC中背景绘制到位图的线程类型

c++ - CMake 和#pragma comment(lib)