如果我的窗口设置了“始终在顶部”扩展样式集,那么我希望它位于所有未设置“始终在顶部”样式的窗口以及那些设置了“始终在顶部”样式的窗口之上但在激活我的窗口之前被激活了。
要测试此功能,我打开任务管理器窗口-将其设置为始终位于顶部,然后打开窗口(myWindow
)。
在Windows 7中,我观察到了预期的行为-myWindow
位于任务管理器的顶部。
但是,在Windows 10中并非如此。任务管理器始终位于其他窗口的顶部,即使这些窗口本身具有“始终位于顶部”的样式集。
他们在Windows 10中使用任务管理器有什么特别的事情吗?如果是,是否有一些方法可以将我的窗口置于任务管理器之上?我试过简单地使用该BringWindowToTop
函数,但这不起作用。无论是不setWindowPos
与HWND_TOP
作为一个值hWndInsertAfter
的论点。
Windows 8中对任务管理器进行了许多更改,这些更改中包含特殊情况的代码以确保始终位于所有其他始终位于顶部的窗口之上,这也就不足为奇了。Microsoft不会因此违反任何合同保证,因为Task Manager是操作系统的内置部分。可以免费使用OS组件进行操作。
要回答您的实际问题,没有文档化的API。WS_EX_TOPMOST
是最好的。它只是为用户提供帮助,而不是在其视网膜上蚀刻应用程序窗口的方法。
当两个不同的窗口都设置了此样式时,其行为取决于实现。获得的唯一保证是,具有该WS_EX_TOPMOST
样式的窗口将始终位于其他窗口的顶部,而没有按Z顺序显示此样式。否则,系统可以自由解决自己认为合适的冲突,包括将最近活动的最上面的窗口保持在顶部,通过将属于系统组件的窗口强制到顶部来打破平局,甚至惩罚具有多个窗口的进程。通过将其窗口强制到“最顶层”堆栈的底部来实现此样式。
相关阅读:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句