读书人

关于多个窗口一直在最上面的有关问题

发布时间: 2012-03-08 13:30:13 作者: rapoo

关于多个窗口一直在最上面的问题
我有多个窗口,需要依照一定的次序显示在最上面,

目前实现方法:
最外面的窗口采用:
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; 

读书人网 >.NET

热点推荐