如果HWND不好,MessageBox返回0

有没有MessageBox可以返回0而不是没有足够的内存的情况? 我有一个情况,我怀疑我传递给MessageBox的HWND是无效的,或者它可能属于正在销毁的窗口

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

有没有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()来查看它返回的错误代码。

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