【发布时间】:2011-10-20 16:46:37
【问题描述】:
我有一个小的 wxWidget 应用程序,它可以将一些首选项保存到一个简单的 xml 文件中。在这些偏好中,我存储了顶层窗口的位置、大小和最大化状态,以便在下次启动时恢复它。
默认情况下,当您最大化一个窗口时,当您再次单击最大化按钮时,您会恢复初始(非最大化)位置/大小。但是当我保存我的偏好时,我唯一能得到的位置和大小就是最大化的那个。所以当用户重新启动它的应用程序,并且想要“取消最大化”它时,窗口仍然会占据整个屏幕。
在 Windows XP 上,我做了一个小技巧,即在获取位置和大小之前调用 SetMaximize(false)。这工作得很好。但是现在我在七,这不再起作用了。似乎 SetMaximize(false) 被延迟了:当我中断时,它可以工作,但是在正常执行期间,我总是以最大化的位置/大小结束,就好像取消最大化操作是在另一个线程中完成的一样。
所以我尝试在“SetMaximize(false)”调用之后添加一个 Sleep(),但我需要使用一个非常高的值来确保它始终工作,我不喜欢这样。
所以,我的问题是:有没有办法获得非最大化窗口的位置和大小? (我也试图捕捉调整大小事件,但它只适用于大小,我也需要位置......并且没有找到任何“窗口移动”事件)
提前感谢您的帮助!
【问题讨论】:
-
哦,我的 google fu 不够强大 :( 我找到了一种方法来完成这项工作,但它仅限于 Windows。所以我仍然很想知道是否有任何方法可以做并且仍然是跨平台的。如果有人对“仅限 Windows”的解决方案感兴趣,请在此处查看:msdn.microsoft.com/en-us/library/windows/desktop/…