强制窗口位于最顶层的窗口之上(如任务管理器)

时间:2011-09-15 16:58:10

标签: c++ c windows winapi

我有一个窗口,我希望显示在其他所有内容之上。我的代码能够成功地强制它几乎在每个窗口之上,除了其他最顶层的窗口。这是我使用的代码:

SetWindowPos(getSDLWindow(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);

每次单击鼠标中键时都会执行此行(我使用鼠标勾来触发它)。

一旦我启动我的程序,然后中键单击一次,从那时起,我的窗口仍然位于所有“常规”窗口之上。

但是,所有“特殊窗口”似乎与我的应用程序窗口属于同一类别,即聚焦时的特殊窗口显示在我的应用程序窗口上方。在这类特殊窗口中是任务栏(使用开始菜单似乎也激活),右键单击菜单(即使是由常规窗口生成),任务管理器,我相信很多其他人。事实上,我相当确定任何其他“最顶层”的窗口都会以这种方式运行。似乎通过我的SetWindowPos调用,我将应用程序窗口的状态提升到了最顶层的窗口。

什么是我可以启动任务管理器,将其移动到我的应用程序窗口(现在它正在覆盖它)然后在任务管理器中间单击鼠标,现在我的应用程序窗口在前面弹回(而重点仍然是任务管理器)。这很好,但我想更进一步,以便我的窗口位于顶部无论什么

除了在循环中反复触发SetWindowPos之外,还有其他方法可以实现吗?如果可能的话,我想避免这种情况。

1 个答案:

答案 0 :(得分:8)