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,因为这两个函数与其他函数使用的坐标不同(如果任务栏/工具栏停靠在不寻常的位置,或者多个监视器的东西停靠在它们的公共边缘)。