Win32 如何将无模式对话框置顶

Win32 How to bring a modeless dialog box to the top

我打开了一组非模式对话框,但我终究无法单击其中的一个使其出现在前台。它获得了焦点,但对话框永远按照它们在屏幕上创建时的顺序保留。最后创建的一个总是在前景中,遮挡(或部分遮挡)其他。

我试过:

响应 WM_LBUTTONUP 消息,但尽管他们被调用但他们什么也不做。我在对话框属性中尝试了不同的配置,比如使用 'SetForground' 或 'Topmost' 参数,但它们什么也没做。

我是在尝试完成一项不可能完成的任务吗?

造成这种情况的原因是 window 所有权。拥有的 window 始终显示在其所有者上方。 documentation.

中对此进行了描述

很明显,您的无模式对话框之间存在所有权关系。您可以通过使每个无模式对话框都属于相同的 window.

来解决此问题

您如何控制所有权取决于您如何创建这些对话框。如果您使用 CreateDialog,则第三个参数用于指定对话框的所有者。