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

时间:2015-01-21 12:25:19

标签: winapi dialog win32gui

我打开了一组无模式对话框,但我不能为我的生活点击其中一个让它出现在前台。它得到了焦点,但对话框永远保留在创建它们的屏幕上。创建的最后一个始终位于前景中,遮挡(或部分遮挡)其他内容。

我试过了:

  • SetActiveWindow(hDlg);
  • SetForegroundWindow(hDlg);
  • SwitchToThisWindow(hDlg,FALSE);

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

我是否尝试过一项不可能完成的任务?

1 个答案:

答案 0 :(得分:1)

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

中有所描述

显然,您在无模式对话框之间拥有所有权关系。您可以通过使每个无模式对话框由同一窗口拥有来解决此问题。

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