关于多个窗口一直在最上面的问题
我有多个窗口,需要依照一定的次序显示在最上面,
目前实现方法:
最外面的窗口采用:
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里,还是放在OnCreate里?
放在OnShow里试试
[解决办法]
在工程的主窗体中放置一个TApplicationEvents组件, 然后在它的OnDeactivate事件代码中写入:
- Delphi(Pascal) code
procedure XXXX.ApplicationEvents1Deactivate(Sender: TObject);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;