如何获取 wxWidget 窗口的"non-maximzed"状态
how to get the "non-maximzed" state of a to wxWidget window
我有一个小wxWidget应用程序,它可以将一些首选项保存到一个简单的xml文件中。在这些首选项中,我存储了顶层窗口的位置,大小和最大化状态,以便我可以在下次启动时恢复它。
默认情况下,当你最大化一个窗口时,当你再次点击最大化按钮时,你会得到你的初始(非最大化)位置/大小。但是当我保存我的偏好时,我唯一能得到的位置和大小是最大化的。因此,当用户重新启动应用程序,并想要"取消最大化"它时,该窗口仍将占据整个屏幕。
在Windows XP上,我做了一个小技巧,在获得位置和大小之前调用SetMaximize(false)。这工作得很好。但现在我在七号,这行不通了。似乎SetMaximize(false)被推迟了:当我中断时,它工作,但在正常执行期间,我总是以最大化的位置/大小结束,就好像unmaximize操作是在另一个线程中完成的。
所以我试着在我的"SetMaximize(false)"调用之后添加一个Sleep(),但我需要使用一个非常高的值来确保它总是工作,我不喜欢。
所以,我的问题是:有没有办法得到非最大化窗口的位置和大小?(我也试着抓住调整大小的事件,但它只适用于大小,我需要的位置也…没有发现任何"window moved"事件)
提前感谢您的帮助!
我用:
wxPoint pos = GetPosition();
wxSize size = GetSize();
可以在Win7/XP和Linux上使用
这很简单。
window-moved类是wxMoveEvent,用于捕捉任何移动的事件类型是wxEVT_MOVE。因此,在顶层窗口类中定义一个函数
空白MyFrame:: OnMove (wxMoveEvent&evt);
像这样绑定:
Bind(wxEVT_MOVE, &MyFrame::OnMove, this);
在OnMove函数和OnSize函数中,通过调用成员函数IsMaximized()来检查窗口是否被最大化。当它返回true时,不要更改位置和大小数据。
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- 如何获取 wxWidget 窗口的"non-maximzed"状态