Windows GDI 上下文 - LoadImage 和 GetLastError()

Ste*_*cil 1 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());
Run Code Online (Sandbox Code Playgroud)

使用 HBITMAP hbitmap、HINSTANCE hThisInstance(WinMain 的参数)和 MY_BITMAP 是有效的位图资源。

dig*_*doo 5

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

可以在此处找到我尝试加载的位图副本。我使用 GIMP 创建它,在当前版本中它有很多问题。

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