两种方法:
1.Delphi自带的:
将Form 的 FromStyle 设置为 fsStayOnTop
即可;但是这个方法,不是很好,如果动态设置的话,整个窗口会一闪,
因为Delphi需要对它的进行重建。
2.Windows Api:
设置最前:
SetWindowPos( Form1.Handle, HWND_TOPMOST, Form1.left, Form1.top, Form1.width, Form1.height, SWP_SHOWWINDOW);
取消:
SetWindowPos(Form1.handle, HWND_NOTOPMOST, Form1.left, Form1.top, Form1.width, Form1.height, SWP_SHOWWINDOW);
1.Delphi自带的:
将Form 的 FromStyle 设置为 fsStayOnTop
即可;但是这个方法,不是很好,如果动态设置的话,整个窗口会一闪,
因为Delphi需要对它的进行重建。
2.Windows Api:
设置最前:
SetWindowPos( Form1.Handle, HWND_TOPMOST, Form1.left, Form1.top, Form1.width, Form1.height, SWP_SHOWWINDOW);
取消:
SetWindowPos(Form1.handle, HWND_NOTOPMOST, Form1.left, Form1.top, Form1.width, Form1.height, SWP_SHOWWINDOW);
SWP_NOMOVE
如何产生不会按Win+M键而消失的小窗口,类似FLASHGET的悬浮窗,我重载了
procedure TLittlebox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams( Params);
Params.WndParent:=0;
end;
设这个Form的边为NONE,
结果在任务栏中出现这个窗口的标题,如何才能达到象FLASHGET一样的窗口呢?
我已经知道答案了,从CSDN得知
procedure TLittlebox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams( Params);
Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;
Params.WndParent := 0; // 这是必须的,否则当App变为后台时会将该窗体设置为不TopMost
end;
一要设置属性为stayontop
而要设置父属性为desktop(桌面)
才能实现始终居于最上层
楼上的代码是对的:
procedure TLittlebox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams( Params);
Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;//最上层
Params.WndParent := 0; // 设父属性,0是桌面
end;