Ste*_* Lu 1 c c++ windows winapi
我有一个窗口,我想显示在其他一切之上.我的代码能够成功地强制它几乎在每个窗口之上,除了其他最顶层的窗口.这是我使用的代码:
SetWindowPos(getSDLWindow(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
Run Code Online (Sandbox Code Playgroud)
每次单击鼠标中键时都会执行此行(我使用鼠标钩来触发它).
一旦我启动我的程序,并从中点击一次,从那时起,我的窗口仍然在所有"常规"窗口之上.
但是,所有"特殊窗口"似乎与我的应用程序窗口属于同一类别,即聚焦时的特殊窗口显示在我的应用程序窗口上方.在这类特殊窗口中是任务栏(使用开始菜单似乎也激活),右键单击菜单(即使是由常规窗口生成),任务管理器,我相信很多其他人.事实上,我相当确定任何其他"最顶层"的窗口都会以这种方式运行.似乎通过我的SetWindowPos调用我已将应用程序窗口的状态提升到最顶层的窗口.
什么是我可以启动任务管理器,将其移动到我的应用程序窗口(现在它正在覆盖它),然后在任务管理器中间单击,现在我的应用程序窗口弹回到前面(同时焦点仍然是在任务管理器上).这很好,但我想更进一步,这样无论如何我的窗口都会在顶部.
除了SetWindowPos在循环中反复触发之外,还有其他方法可以实现吗?如果可能的话,我想避免这种情况.
不,因为没有"超级最顶层"的旗帜.
也不应该因为所有超级最顶级的窗户都会互相争夺控制权.