在我的程序的第一步中调用 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是有效的位图资源 .
2 回答
显然,
LoadImage
返回NULL
,并且在文件格式出现问题时不会设置任何错误 .我试图加载的位图副本可以找到here . 我使用GIMP创建它,在当前版本中它是非常错误的 .
解决方案是在Paint中打开文件并再次保存 . 现在
LoadImage
加载图像没有任何抱怨 .我发现与最新版本的GIMP完全相同 . 当您从Gimp进行导出时,选择Compatibility Options []按钮并选中“Do not write colourspace information”复选框,并使用LoadImage加载位图 . 编辑:我现在看到这个效果的事先评论,否则我可能没有打扰写作!