在我的程序的前几步调用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作为有效的位图资源。
发布于 2013-08-08 14:31:43
显然,当文件格式出现问题时,LoadImage会返回NULL,并且不会设置任何错误。
我试图加载的位图的副本可以在here中找到。我是使用GIMP创建的,在当前版本中GIMP存在相当多的buggy。
解决方案是在Paint中打开该文件,然后再次保存。现在,LoadImage加载图像时没有任何抱怨。
发布于 2014-10-17 02:55:33
我在最新版本的GIMP中发现了完全相同的行为。当你从Gimp导出时,选择兼容性选项+按钮并选中“不要写入色彩空间信息”复选框,位图将使用LoadImage正常加载。编辑:我现在看到了之前的评论,否则我可能不会写了!
https://stackoverflow.com/questions/7947560
复制相似问题