旧事重提:如何让某个程序的子窗体始终位于所有进程窗体的最前端?

zyb 2000-03-23 08:16:00
假设有一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窗体。
...全文
310 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lin 2000-03-29
  • 打赏
  • 举报
回复
It's enough. Thanks a lot.
zyb 2000-03-28
  • 打赏
  • 举报
回复
我的问题已解决,谢谢大家!
如果Lin先生还不满足分数的话,给我个妹儿,我会再送上
些许分数的!-------wxlzyb@263.net
bitter 2000-03-25
  • 打赏
  • 举报
回复
form.bringtofront
Lin 2000-03-24
  • 打赏
  • 举报
回复
很简单啊,以前我好象回答过这样的问题:
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.
torent 2000-03-24
  • 打赏
  • 举报
回复
1.设置FormStyle为fsStayOnTop
2.在OnDeactivate事件中加入
Show;
zyb 2000-03-24
  • 打赏
  • 举报
回复
看来分数少了点,大侠们对我的这个问题很冷落啊!
那好吧,如果谁帮我解决这个问题,我可以再送一些分数的!OK!
-----急征答案!
zyb 2000-03-23
  • 打赏
  • 举报
回复
请大侠提供详细的源代码!
jll 2000-03-23
  • 打赏
  • 举报
回复
好象在哪见过《Delphi 3从入门到精通》Marco Cantu著,方法好象是不断查询想要居最前的窗口是否失去焦点,一旦失去就Stay on top……
蝈蝈俊 2000-03-23
  • 打赏
  • 举报
回复
我也不知道,不过我知道当用户按下热键时,可以让它立即显示在最前面(不管您现在在那个应用程序),参见
http://www.csdn.net/expert/TopicView.asp?id=4688
http://www.csdn.net/expert/TopicView.asp?id=4738
可能会对您有所帮助.

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧