在我的程序的第一步中调用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是有效的位图资源。
答案 0 :(得分:4)
显然,LoadImage
会返回NULL
,并且在文件格式出现问题时不会设置任何错误。
可以找到我尝试加载的位图的副本here。我使用GIMP创建它,在当前版本中它是非常错误的。
解决方案是在Paint中打开文件并再次保存。现在LoadImage
加载图片时没有任何抱怨。
答案 1 :(得分:1)
我发现与最新版本的GIMP完全相同。 当您从Gimp导出时,选择兼容性选项[+]按钮并选中“不写入颜色空间信息”复选框,并使用LoadImage加载位图。编辑:我现在看到了对此效果的事先评论,否则我可能不会感到困扰写作!