Win32 C++-在窗口恢复时执行某些操作,哪条消息



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

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

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

另一个问题,如果你回答了这个问题,第一个问题就无关紧要了,因为我将不再需要使用这种变通方法:有没有更好的方法可以将所有工具窗口放在前面?

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

这个问题的天真答案是听WM_SIZE并响应wParamSIZE_RESTORED

另一种明显的可能性是使所有工具窗口都归主窗口所有。只要你很高兴工具窗口总是在主窗口的顶部,这将解决你的问题。最小化所有者时,所拥有的窗口将被隐藏,恢复所有者时将重新显示。

有关所有权的详细信息,请参阅MSDN关于窗口功能的主题。

最新更新