我有多个窗口,需要依照一定的次序显示在最上面,目前实现方法:
最外面的窗口采用:
SetWindowPos(最上层的那个窗体的handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)
其余窗口用循环一次叠放到下面,
SetWindowPos(当前窗体的handle,上一个handle,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)程序启动的时候没有问题。但是和其他程序窗口切换后,只剩下一个窗口保持在最前面了,也就是第一个窗口。
请教各位,是否可以实现这一组窗口在和其他程序切换的过程中,始终按照这个次序保持在最上面呢?谢谢关注。
最外面的窗口采用:
SetWindowPos(最上层的那个窗体的handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)
其余窗口用循环一次叠放到下面,
SetWindowPos(当前窗体的handle,上一个handle,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)程序启动的时候没有问题。但是和其他程序窗口切换后,只剩下一个窗口保持在最前面了,也就是第一个窗口。
请教各位,是否可以实现这一组窗口在和其他程序切换的过程中,始终按照这个次序保持在最上面呢?谢谢关注。
放在OnShow里试试
SetWindowPos(handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE) 无效,我是在主窗体用Timer一直调用的。
只能保持第一个窗体在最上面,其余的窗体都没有叠放成功,
另外我看到“千千静听”等等播放器倒是达到这个效果了。
设置为总在最上面后,播放列表,均衡器,主界面的叠放次序都能在切换任务的时候很好的保持住。
begin
SetWindowPos(Handle1, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
SetWindowPos(Handle2, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
......
SetWindowPos(HandleN, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
end;