如何让一个窗体一直在所有应用程序的最前端?(50分)

  • 主题发起人 主题发起人 Mr.Cool
  • 开始时间 开始时间
M

Mr.Cool

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让一个窗体一直在所有应用程序的最前端?
注意,是“一直”,就象网络蚂蚁或者GetRight一样。
 
formstyle : = stayontop //也许是FormStatis??忘记了
Foregroundwindow// 类似的东西,可以把 FORM 放大最前,在ON DE(IN)ACTIVE
时使用之。
 
form.formstyle := stayontop
all is ok
 
将该窗体的属性FormStyle设为fsStayOnTop即可.
 
fsStayOnTop
我觉得就可以了吧。还有什么别的要求吗?
 
不行啊,当切换到别的应用软件时,就不行了,
例如切换到资源管理器,就隐藏起来了。
 
当两个程序都使用了‘Stay On Top’特性时哪个被激活,哪个就在最前端,
否则使用了‘Stay On Top’特性的窗口将在最前端
不过用fsStayOnTop属性在切换时会闪烁,调用API函数就没问题
with form1 do
setWindowPos(Handle,HWND_TOPMOST,left,top,width,height,SWP_NOMOVE);
 
FormStyle在使用fsNormal和fsStayOnTop切换时,屏幕为什么老是闪一下?
 
//TForm虽然有TopMost属性,但屏幕回闪烁,本函数可以弥补这个缺点
procedure SetWindowTopMost(WindowName:TForm; DoTopMost:Boolean);
begin
if DoTopMost then
SetWindowPos(WindowName.Handle,Hwnd_Topmost,0,0,0,0,(SWP_NOMOVE Or SWP_NOSIZE))
else
SetWindowPos(WindowName.Handle,Hwnd_Notopmost,0,0,0,0,(SWP_NOMOVE Or SWP_NOSIZE));
end;
 
同意 CJ 的方法
 
Mr.Cool:

这个问题已经很长时间没有人参加讨论,为保持版面
整洁,节约网友时间,请提问者采取必要处理措施。
关于本版管理细则,请参见<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这个</a>问题。如两天
内提问者没有响应,我将采取强制措施。

如有管理建议,请到<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这里</a>提出。谢谢!
 
多人接受答案了。
 
我编写了一个软件,叫Task.他能定时提醒,而且提醒窗口始终在最前面.
包括您打windows 游戏时,他也弹出在最前面.
主页: http://sunhy.126.com
您可以一试,如果效果和您的要求一样.可以给我来信
 
后退
顶部