怎样使窗口处于桌面的最上端?

时间:2022-09-02 15:09:08
DotNET的Form有一个Topmost的属性,设置为True之后,可以将窗口设定为屏幕的最顶端。但是在整个Windows中Topmost的窗口只有一个也就是最后设定了Topmost风格的那一个。
有什么办法能让我的窗口始终处于窗口最上端,而与其它窗口或者其他应用程序使用的窗口是否设置Topmost风格无关。

希望能够获得好的建议,谢谢大家!

16 个解决方案

#1


试一下将所有窗体固定位置:
this.Location = new Point(0,y);

#2


To ChengKing:
这样做有什么帮助么?我说的是Z-Order的最上端。

#3


在2000以上操作系统好像做了设置,不可能永远占有TOP的吧,可能出路在其他窗口MOSTTOP后,你的窗口再MOSTTOP一下..

#4


这个应该是最不到DI
据说98/ME下可以hack gui内核搞定,直接修改z order,2K/XP能做这个的可能性非常小

#5


一个笨方法,用定时器,定时调用SetWindowPos函数,把窗体设为最顶端。

#6


肯定是做得到的,要不那些播放器的始终在最前面功能是怎么做的阿??不过不知道怎么做,关注ing

#7


播放器没有吧? 看qq,msn等什么的上线通知,还不是在播放器上面

#8


站个位置,关注一下

#9


嗯,有道理,我玩游戏的时候,即使是全屏,还是会有上线提示的

#10


oyljerry兄说的没错,差不多就是这样的效果,只是我希望这个窗口始终处于最顶端,除非我把它销毁。

#11


关注。

以前我是用定时器。

#12


定时器吧,不断BringWindowToTop

#13


逻辑上就有问题,自相矛盾了,以你的矛戳你的盾,会怎样呢?
假设真的有始终最顶窗口,你有两个这样的窗口,这两个哪个优先?
如果你只是要比普通Topmost的窗口优先级高,那只有去找M$去解决了,至少目前没有这种逻辑

#14


location

#15


关注~~

#16


To viena(维也纳nn-实心木头人)
如果有两个这样的窗口,自然可以通过自己的程序逻辑去解决。
我也举一个比较常见的例子,WINAMP大家都用过的,我装的是2.9,当设置成为TOPMOST之后,WINAMP的窗口就是最顶层窗口了,但是大家都知道,WINAMP的播放器是由3-4个窗口组成的,每一个窗口都是独立的,当设置成为TOPMOST之后,所有的窗口是最顶端的。看看窗口风格每一个窗口都有WS_EX_TOPMOST的,当然可能还有一些其它的机制处理,我想和大家讨论的,也正是用什么具体的方法去实现。

#1


试一下将所有窗体固定位置:
this.Location = new Point(0,y);

#2


To ChengKing:
这样做有什么帮助么?我说的是Z-Order的最上端。

#3


在2000以上操作系统好像做了设置,不可能永远占有TOP的吧,可能出路在其他窗口MOSTTOP后,你的窗口再MOSTTOP一下..

#4


这个应该是最不到DI
据说98/ME下可以hack gui内核搞定,直接修改z order,2K/XP能做这个的可能性非常小

#5


一个笨方法,用定时器,定时调用SetWindowPos函数,把窗体设为最顶端。

#6


肯定是做得到的,要不那些播放器的始终在最前面功能是怎么做的阿??不过不知道怎么做,关注ing

#7


播放器没有吧? 看qq,msn等什么的上线通知,还不是在播放器上面

#8


站个位置,关注一下

#9


嗯,有道理,我玩游戏的时候,即使是全屏,还是会有上线提示的

#10


oyljerry兄说的没错,差不多就是这样的效果,只是我希望这个窗口始终处于最顶端,除非我把它销毁。

#11


关注。

以前我是用定时器。

#12


定时器吧,不断BringWindowToTop

#13


逻辑上就有问题,自相矛盾了,以你的矛戳你的盾,会怎样呢?
假设真的有始终最顶窗口,你有两个这样的窗口,这两个哪个优先?
如果你只是要比普通Topmost的窗口优先级高,那只有去找M$去解决了,至少目前没有这种逻辑

#14


location

#15


关注~~

#16


To viena(维也纳nn-实心木头人)
如果有两个这样的窗口,自然可以通过自己的程序逻辑去解决。
我也举一个比较常见的例子,WINAMP大家都用过的,我装的是2.9,当设置成为TOPMOST之后,WINAMP的窗口就是最顶层窗口了,但是大家都知道,WINAMP的播放器是由3-4个窗口组成的,每一个窗口都是独立的,当设置成为TOPMOST之后,所有的窗口是最顶端的。看看窗口风格每一个窗口都有WS_EX_TOPMOST的,当然可能还有一些其它的机制处理,我想和大家讨论的,也正是用什么具体的方法去实现。