如何使程序窗口始终位于最上层(50分)

  • 主题发起人 主题发起人 linhl
  • 开始时间 开始时间
L

linhl

Unregistered / Unconfirmed
GUEST, unregistred user!
我想使自己的程序运行后,窗口始终位于其它窗口之上,不
被新运行窗口所遮盖,如何实现?
 
窗口的属性应该设为.ShowModal
 
procedure AlwaysOnTop(Form: TForm; OnTop: Boolean);
begin
if OnTop then
SetWindowPos(Form.Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)
else
SetWindowPos(Form.Handle, HWND_NOTOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)
end;
窗体为normal型
 
不知道再运行一个 topmost 会不会覆盖
 
procedure Createparams(Var Params:TCreateParams);override;

...



procedure TFormDrop.Createparams(var Params:TCreateParams);

begin

Inherited CreateParams(Params);

With Params do

begin

EXStyle:=ExStyle or WS_EX_TOPMOST OR WS_EX_ACCEPTFILES or WS_DLGFRAME

wndParnet:=GetDesktopWindow; //关键一行,用SetParent都不行!!

end;

 
houanl的方法无效,另外我后来也找到一个更简单的方法,
将窗口Formstly属性设置为fsStayOnTop就行了,感想各位热情相助!
 
后退
顶部