如果HWND错误,MessageBox返回0

时间:2009-08-17 21:19:17

标签: c++ windows winapi

除了没有足够的内存,MessageBox是否可以返回0?我有一个案例,我怀疑我传递给MessageBox的HWND无效,或者它属于正在被销毁的窗口。

在我的情况下,MessageBox没有显示并返回0,但我似乎有足够的可用内存。

2 个答案:

答案 0 :(得分:8)

  

除了内存不足外,是否存在MessageBox可以返回0的情况?

来自MSDN文档:

http://msdn.microsoft.com/en-us/library/ms645505%28VS.85%29.aspx

If the function fails, the return value is zero. To get extended error information, call  GetLastError.

我调用GetLastError()来查看它返回的错误代码。

答案 1 :(得分:0)

如果将NULL或GetDesktopWindow()作为HWND参数传递,问题是否会消失?如果是这样,那么你可能是正确的。您还可以尝试使用IsWindow()或IsWindowVisible()函数提前验证HWND。 (虽然如果有问题的窗口正在被破坏,我不确定这些功能的行为是否可靠。)