如何检查我当前窗口是否是最可见的窗口

时间:2015-12-22 10:28:24

标签: c++ windows winapi

我有一个使用WS_EX_TOPMOST标志设置为AlwaysOnTop的窗口。现在,某些其他应用程序可能还有一个窗口,其中设置了WS_EX_TOPMOST并覆盖了我的窗口的最顶层标志。

我应该如何检查我的窗口是否确实是最顶层的窗口,并且没有任何东西被涂在上面(窗口上没有任何东西被绘制是重要的部分)。如果有什么东西在我的窗户上画画,我想要隐藏我的窗口并再次显示它,当我能把它作为最顶层的窗口时(但这可能是第二步)

2 个答案:

答案 0 :(得分:2)

调用GetWindow传递最顶层窗口的句柄和GW_HWNDFIRST标记。返回的窗口将是Z顺序中最高的最顶层窗口。然后,您可以使用GW_HWNDNEXT标志按照Z顺序递减的顺序遍历最顶层的窗口,直到找到您的顺序为止。如果任何窗口与您的窗口重叠,那么您的窗口就在下面。

答案 1 :(得分:0)

旧的标准方法是将WindowFromPoint调用到您所谓的可见窗口上的一个点,并将返回的句柄与您自己的窗口句柄进行比较。使用剪辑系统有更好的方法。我讨论了这个here