gpt4 book ai didi

winapi - 获取最小化窗口的大小

转载 作者:行者123 更新时间:2023-12-02 06:23:49 29 4
gpt4 key购买 nike

我从来不知道这一点,但显然:

By default, the system reduces a minimized window to the size of its taskbar button and moves the minimized window to the taskbar. A restored window is a window that has been returned to its previous size and position, that is, the size it was before it was minimized or maximized.



在应用程序中,我们希望在退出时保存各种窗口的位置/大小。这会导致最小化窗口出现问题。我们的解决方案是在运行保存状态逻辑之前恢复所有窗口,但这似乎很麻烦。有没有更好的办法?

最佳答案

如何使用 GetWindowPlacement ?
这将返回 WINDOWPLACEMENT structure包含有关窗口在恢复位置的坐标的信息。

请记住(正如 Leo Davidson 在评论中指出的那样)您必须尊重工作区坐标和屏幕坐标之间的差异。如 WINDOWPLACEMENT文档说明:

The coordinates used in a WINDOWPLACEMENT structure should be used only by the GetWindowPlacement and SetWindowPlacement functions. Passing workspace coordinates to functions which expect screen coordinates (such as SetWindowPos) will result in the window appearing in the wrong location. For example, if the taskbar is at the top of the screen, saving window coordinates using GetWindowPlacement and restoring them using SetWindowPos causes the window to appear to "creep" up the screen.



或者,我之前毫无疑问使用过的更简单的解决方案是在保存状态之前检查窗口是否最小化,如果是,则跳过保存任何状态信息。

至于解释为什么窗口在最小化时会改变其大小, Raymond Chen's blog entry (以及链接的条目)关于该主题是强制性阅读。它们并没有真正改变任务栏按钮的大小,而是改变为 160x31 的预定义大小。他解释说,您可以通过将 MDI 子窗口最小化到其父窗口来看到这一点——这就是它的大小。

关于winapi - 获取最小化窗口的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4396109/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com