Win32 C ++ - 当窗口恢复时做一些事情,哪条消息?

时间:2012-10-14 18:34:54

标签: windows winapi

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

所以,我正在努力解决这个问题,当用户恢复窗口的最小化时,我想通过所有工具窗口进行枚举并将它们带到前面,可能是通过调用{{ 1}}。

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

另一个问题,如果你回答这个问题,那么第一个问题就无关紧要了,因为我不再需要使用那个解决方法了:有没有更好的方法将所有工具窗口都带到前面?

2 个答案:

答案 0 :(得分:5)

为工具窗口提供WS_POPUP样式(和 WS_OVERLAPPED),并将主窗口设为父窗口(严格来说是它们的所有者窗口)。这样,工具窗口将保持在主窗口的顶部。这可能(或可能不是)你想要的。

答案 1 :(得分:4)

该问题的天真答案是倾听WM_SIZE并回复wParam SIZE_RESTORED的值。

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

Window Features上了解有关MSDN主题所有权的详情。