【发布时间】:2011-03-10 09:56:02
【问题描述】:
我想把一个窗口放在前面(来自其他应用程序)。目前我正在使用:
::SetWindowPos(hwnd, GetForegroundWindow(), 0, 0, 0, 0, SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
它工作正常,但在某些(我不知道的)情况下,它会使窗口始终位于顶部。根据 MSDN,我应该使用 HWND_NOTOPMOST 代替 GetForegroundWindow(),但它不起作用——窗口停留在其他(并不总是在顶部)窗口之下。
如何在不激活的情况下将窗口置于前面?
【问题讨论】:
-
文档说
HWND_NOTOPMOST“如果窗口已经是非最顶层窗口则无效”。 -
None 对另一个问题的建议答案是一个很好的解决方案。整个问题只是一团糟。大卫在这里得到了你的答案。
-
我认为我不能使用那些替代品 - 所有这些(我认为)都激活窗口,我不能这样做。
-
我已经删除了我的答案。它不起作用。我认为你不能在不接管输入焦点的情况下做到这一点。我认为窗口管理器旨在让用户决定哪个窗口位于顶部而不是程序。
标签: c++ windows winapi z-order