【发布时间】:2011-12-18 08:29:24
【问题描述】:
在我的程序的第一步中调用LoadImage() 返回NULL。紧随其后,GetLastError() 被调用,它出乎意料地返回 0。
我想知道为什么LoadImage() 失败了,因为GetLastError() 清楚地表明在失败的函数之后没有设置错误代码。
这是一个sn-p的代码:
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 是有效的位图资源。
【问题讨论】:
-
嗯...
FindResourcereturn 为该位图做什么? -
如果 LoadImage() 返回 NULL,只有在调用 GetLastError() 之前调用另一个 API 函数并清除当前错误代码时,GetLastError() 才能返回 0。 GetLastError() 仅在失败的函数之后才有意义。这让我觉得发布的代码不是真正使用的代码。
-
您要么在 Windows 中发现了一个错误,要么我们没有查看真正的代码。考虑到非常无用的错误报告,尤其是在 GUI 应用程序中,我只会在“不是真正的代码”上付出代价。
-
我在它之后立即调用它。为什么我不应该发布整个有意义的代码?我已经为此困扰了太多小时,我想了解为什么它不起作用。说实话,曾经也发生过类似的事情,叫做 CreateDIBSection(在另一个程序中),以同样的方式处理错误。
-
请求的大小是
0 x 0像素,而您没有请求LR_DEFAULTSIZE,这是本意吗?