Windows GDI Context- LoadImage和GetLastError()

在我的程序的第一步中调用 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)

2 years ago

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

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

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

2 years ago

我发现与最新版本的GIMP完全相同 . 当您从Gimp进行导出时,选择Compatibility Options []按钮并选中“Do not write colourspace information”复选框,并使用LoadImage加载位图 . 编辑:我现在看到这个效果的事先评论,否则我可能没有打扰写作!