【发布时间】:2016-11-08 15:15:15
【问题描述】:
我有一个由一个主窗口和一个弹出窗口组成的应用程序,我希望它位于所有其他应用程序之上。让我们将“Window A”称为主窗口,将“Window B”称为顶部弹出窗口,将“Window C”称为另一个应用程序的窗口。
我正在使用此代码将窗口 B 设置在顶部:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NoMove or SWP_NoSize);
这按预期工作,我可以打开另一个应用程序(窗口 C)并且窗口 B 保持在顶部。但是,如果我点击它的窗口标题,“窗口 A”就会出现在“窗口 C”之上。单击窗口 B 的任何部分时,有没有办法防止主窗口(窗口 A)显示在前面?
【问题讨论】:
-
窗口 A 是否归窗口 B 所有?
-
覆盖 B 的 CreateParams 以设置 WndParent = 0。在这里问了很多次。顺便说一句,您可以使用 fsStayOnTop 作为 FormStyle。
-
显然您无法在所有其他窗口之上。你会输给其他想要做同样事情的窗口。在 Win32 意义上,A 可能是 B 的所有者。按照 Sertac 的说法,让 B 成为无主。
-
如果这里被问了很多次,@Sertac,那么您能否投票以将其作为重复项关闭,而不是在评论中给出答案?
-
不可能保证 100%,因为肯定会有其他应用程序与您的职位竞争,谁会脱颖而出。有点像这些选举...