旧事重提:如何让某个程序的子窗体始终位于所有进程窗体的最前端?
假设有一Delphi4.0程序,有form1,form2两个窗体,在form1中点击Button1后执行form2.show,如何使form2始终位于所有进程窗体的最前端,即从执行了form2.show后,无论再打开资源管理器、运行word97、IE5。0等任何其它程序,form2始终能位于屏幕的最前端?
以前我曾提问过同样的问题,有人建议我用SetWindowPos(handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE)以及设置form2.Formstyle := fsStayontop ,但我试过后行不通,它们只能使form2位于本程序所有窗体的最前端,启动其他程序后便覆盖了form2窗体。
问题点数:15、回复次数:9Top
1 楼ghj1976(蝈蝈俊.net)回复于 2000-03-23 08:55:00 得分 0
我也不知道,不过我知道当用户按下热键时,可以让它立即显示在最前面(不管您现在在那个应用程序),参见
http://www.csdn.net/expert/TopicView.asp?id=4688
http://www.csdn.net/expert/TopicView.asp?id=4738
可能会对您有所帮助.
Top
2 楼jll(你快乐,所以我快乐)回复于 2000-03-23 09:38:00 得分 0
好象在哪见过《Delphi 3从入门到精通》Marco Cantu著,方法好象是不断查询想要居最前的窗口是否失去焦点,一旦失去就Stay on top……Top
3 楼zyb()回复于 2000-03-23 09:48:00 得分 0
请大侠提供详细的源代码!Top
4 楼zyb()回复于 2000-03-24 16:49:00 得分 0
看来分数少了点,大侠们对我的这个问题很冷落啊!
那好吧,如果谁帮我解决这个问题,我可以再送一些分数的!OK!
-----急征答案!Top
5 楼torent()回复于 2000-03-24 18:31:00 得分 0
1.设置FormStyle为fsStayOnTop
2.在OnDeactivate事件中加入
Show;Top
6 楼Lin(林)回复于 2000-03-24 18:58:00 得分 15
很简单啊,以前我好象回答过这样的问题:
1、如果你用D5, 在Form1上放置ApplicationEvents组件,并处理OnDeactivate事件;如果用D4,在Form1的OnCreate事件中加入Application.OnDeactivate := ApplicationDeactivate;
2、在Application的Deactivate事件中加入一行代码:
SetWindowPos(Application.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
3、It's OK.Top
7 楼bitter()回复于 2000-03-25 12:48:00 得分 0
form.bringtofrontTop
8 楼zyb()回复于 2000-03-28 16:40:00 得分 0
我的问题已解决,谢谢大家!
如果Lin先生还不满足分数的话,给我个妹儿,我会再送上
些许分数的!-------wxlzyb@263.netTop
9 楼Lin(林)回复于 2000-03-29 12:33:00 得分 0
It's enough. Thanks a lot.Top




