窗口问题:怎样把窗口显示到所有程序的最前端? (20分)

  • 主题发起人 主题发起人 yayiye
  • 开始时间 开始时间
Y

yayiye

Unregistered / Unconfirmed
GUEST, unregistred user!
当窗口检测到消息时,怎样把这个窗口显示到所有应用程序的最前端?
像监控程序的提示窗口。
 
把FormStyle设为fsStayOnTop
并让此程序激活!
平时可以把Visible设为False;
 
BringToFront?
 
Public
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;
end;
end;
 
比如:StayOnTop(Application.MainForm.Handle, True);
procedure StayOnTop(Handle: HWND; OnTop: Boolean);
const
csOnTop: array[Boolean] of HWND = (HWND_NOTOPMOST, HWND_TOPMOST);
begin
SetWindowPos(Handle, csOnTop[OnTop], 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
end;
如果设置FormStyle设为fsStayOnTop要设置主窗体才有效。
 
多人接受答案了。
 
后退
顶部