Winapi 获取最小化窗口的大小
我从不知道这一点,但显然: 默认情况下,系统会减少 最小化窗口,使其大小为 任务栏按钮并移动最小化的 窗口到任务栏。修复的 “窗口”是指已关闭的窗口 恢复到以前的大小和 位置,也就是它的大小 在它被最小化或最大化之前Winapi 获取最小化窗口的大小,winapi,Winapi,我从不知道这一点,但显然: 默认情况下,系统会减少 最小化窗口,使其大小为 任务栏按钮并移动最小化的 窗口到任务栏。修复的 “窗口”是指已关闭的窗口 恢复到以前的大小和 位置,也就是它的大小 在它被最小化或最大化之前 在应用程序中,我们希望在出口处保存各种窗口的位置/大小。这会导致最小化窗口的问题。我们的解决方案是在运行save-state逻辑之前恢复所有窗口,但这似乎有点骇人听闻。有更好的方法吗?处理WMU大小的消息。如果wParam未最大化或最小化大小,请在某些变量中保持窗口大小和位置。在窗
在应用程序中,我们希望在出口处保存各种窗口的位置/大小。这会导致最小化窗口的问题。我们的解决方案是在运行save-state逻辑之前恢复所有窗口,但这似乎有点骇人听闻。有更好的方法吗?处理WMU大小的消息。如果wParam未最大化或最小化大小,请在某些变量中保持窗口大小和位置。在窗口关闭时使用这些变量。如何使用? 返回包含有关窗口在还原位置的坐标的信息的 请记住(正如Leo Davidson在评论中指出的),您必须尊重工作区和屏幕坐标之间的差异。正如
WINDOWPLACEMENT
文档所述:
在一个坐标系中使用的坐标
WINDOWPLACEMENT结构应该是
仅由GetWindowPlacement使用
和设置WindowPlacement函数。
将工作空间坐标传递给
需要屏幕显示的功能
坐标(如SetWindowPos)
将导致窗口显示在中
错误的位置。例如,如果
任务栏位于屏幕的顶部
屏幕,保存窗口坐标
使用GetWindowPlacement和还原
使用SetWindowPos会导致
窗口显示为向上“爬行”
屏幕
或者,我以前无疑使用过的更简单的解决方案是,在保存状态之前检查窗口是否最小化,如果最小化,则跳过保存任何状态信息
至于解释为什么窗口在最小化时(以及链接的条目)会改变其大小,这是强制性阅读。它们并没有真正改变任务栏按钮的大小,而是预先定义了160x31的大小。他解释说,你可以通过最小化MDI子窗口到它的父窗口(实际上是它的大小)来看到这一点 +!,这是GetWindowPlacement的作业。只需确保只将获得的值输入SetWindowPlacement,因为这两个函数与其他函数使用的坐标不同(如果任务栏/工具栏停靠在不寻常的位置,或者多个监视器的东西停靠在它们的公共边缘)。