Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果HWND不正确,则MessageBox返回0_C++_Windows_Winapi - Fatal编程技术网

C++ 如果HWND不正确,则MessageBox返回0

C++ 如果HWND不正确,则MessageBox返回0,c++,windows,winapi,C++,Windows,Winapi,是否存在MessageBox返回0而不是内存不足的情况?我怀疑传递给MessageBox的HWND无效,或者它属于正在被销毁的窗口 在我的例子中,MessageBox不会显示并返回0,但我似乎有足够的可用内存。如果将NULL或GetDesktopWindow()作为HWND参数传递,问题是否会消失?如果是这样,那么你可能是对的。您还可以尝试使用IsWindow()或IsWindowVisible()函数提前验证HWND。(尽管我不确定这些函数的行为是否可靠,如果所讨论的窗口正在被破坏。) 是否存

是否存在MessageBox返回0而不是内存不足的情况?我怀疑传递给MessageBox的HWND无效,或者它属于正在被销毁的窗口


在我的例子中,MessageBox不会显示并返回0,但我似乎有足够的可用内存。

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

是否存在MessageBox返回0而不是内存不足的情况

从MSDN文档中:


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

GetLastError有帮助。它返回1400-错误\无效\窗口\句柄,这是有意义的。我仍然有点困惑,因为::IsWindow在同一个句柄上返回TRUE如果窗口正在被销毁,那么从技术上讲,IsWindow可能仍然是TRUE,即使窗口被部分销毁,因此对您的目的没有用处。您尝试过IsWindowVisible吗?::IsWindow和::IsWindowVisible在MessageBox之前返回TRUE,在MessageBox之后返回FALSE。所以,我的结论是MessageBox在某种程度上允许窗口在创建之前完成销毁,MessageBox是一个对话框并运行一个消息泵。
If the function fails, the return value is zero. To get extended error information, call  GetLastError.