Windows GDI Context- LoadImage和GetLastError()

时间:2011-10-30 20:19:18

标签: 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是有效的位图资源。

2 个答案:

答案 0 :(得分:4)

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

可以找到我尝试加载的位图的副本here。我使用GIMP创建它,在当前版本中它是非常错误的。

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

答案 1 :(得分:1)

我发现与最新版本的GIMP完全相同。 当您从Gimp导出时,选择兼容性选项[+]按钮并选中“不写入颜色空间信息”复选框,并使用LoadImage加载位图。编辑:我现在看到了对此效果的事先评论,否则我可能不会感到困扰写作!