4

所以,我有一个使用纯 WinAPI 的基于对话框的应用程序。有一个主对话框,然后是工具窗口的多个其他对话框。这些工具窗口旨在自由浮动,用户可以拖动、隐藏和显示它们,但它们没有任务栏条目。这是我的意图,但问题是,当我从主窗口切换到不同的应用程序时,然后单击主窗口的任务栏条目,主窗口会显示,但工具窗口不会。它们隐藏在主窗口后面,有时隐藏在其他应用程序的窗口后面,在您移动所有最顶层的窗口并找到工具窗口之前,您无法使用它们。

所以,我试图解决这个问题的是,当用户从最小化恢复窗口时,我想枚举所有工具窗口并将它们带到前面,也许通过调用SetActiveWindow().

但是当窗口恢复时会发送什么消息?我在想 WM_SHOW 或 WM_RESTORE,但它们不存在。

另一个问题,如果您回答这个问题,第一个问题是无关紧要的,因为我将不再需要使用该解决方法:有没有更好的方法将所有工具窗口放在前面?

4

2 回答 2

5

为工具窗口赋予WS_POPUP样式(而不是 WS_OVERLAPPED),并使主窗口成为其父窗口(严格来说它是它们的所有者窗口)。这样工具窗口将保留在主窗口的顶部。这可能(也可能不是)是您想要的。

于 2012-10-14T18:41:36.417 回答
4

对这个问题的天真回答是倾听WM_SIZE并回应wParam.SIZE_RESTORED

另一个明显的可能性是使所有工具窗口都归主窗口所有。只要您对工具窗口始终位于主窗口顶部感到满意,这将解决您的问题。拥有的窗口在所有者最小化时将被隐藏,并在所有者恢复时重新显示。

在有关窗口功能的 MSDN 主题中了解有关所有权的更多信息。

于 2012-10-14T18:40:43.247 回答