Windows GDI Context- LoadImage and GetLastError()

Windows GDI Context- LoadImage and GetLastError()

本文关键字:GetLastError and LoadImage GDI Context- Windows      更新时间:2023-10-16

在程序的第一步中调用LoadImage()返回NULL。就在它之后,调用GetLastError(),它出人意料地返回0。我想知道为什么LoadImage()失败,因为GetLastError()清楚地显示,失败的功能后没有设置错误代码。这是一段代码:

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

与HBITMAP HBITMAP, HINSTANCE hThisInstance (WinMain的参数),和MY_BITMAP一个有效的位图资源。

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

我试图加载的位图的副本可以在这里找到。我使用GIMP创建了它,而GIMP在当前版本中有很多bug。

解决方案是在Paint中打开文件并再次保存。现在LoadImage加载图像没有任何抱怨

我在最新版本的GIMP中发现了完全相同的行为。当你从Gimp导出时,选择兼容性选项[+]按钮并勾选"不写色彩空间信息"复选框,位图将使用LoadImage加载。编辑:我现在看到了之前的评论,否则我可能不会费心写!