如何确定Windows应用程序是否在屏外?

kgr*_*ffs 5 .net c# c++ windows winapi

我正在尝试调试安装了LogMeIn的用户的一个奇怪问题.几天后,我的应用程序打开的一些对话框可能会在屏幕外显示.如果我可以可靠地检测到它,我可以以编程方式将对话框移回它们再次可见的位置.

注意:这必须适用于多个监视器并使用win32 API.但是,如果你知道如何从.NET中做到这一点我可以从那里推断......

更新:对于好奇,上面提到的错误与wxWidgets有关.如果您运行wxWidgets应用程序,然后离开并让屏幕保护程序运行,然后使用LogMeIn远程登录,然后尝试从您的应用程序打开一个对话框,如果您使用wxDisplay :: GetFromPoint(pos)或wxWindowBase,您将遇到麻烦:: Center()定位对话框.

Fre*_*man 8

只需将MonitorFromWindow与MONITOR_DEFAULTTONULL标志一起使用即可.如果返回值为null,则窗口不可见.您随后可以通过MONITOR_DEFAULTTONEAREST以便能够在最近的监视器上重新定位窗口.