这是我的代码,我尝试了 n 种方法以后得出的结论是这种方法最好:
procedure TFormMain.SetIsFullScreen(value: boolean);
Const
; OldWindowState ;: TWindowState = wsNormal;
; VisibleStatusBar: boolean = true;
; OldWindowStyle ;: integer = 0;
begin
; if value then
; begin
; ; LockWindowUpdate(Handle);
; ; OldWindowState ;:= WindowState;
; ; VisibleStatusBar:= StatusBar.Visible;
; ; StatusBar.Visible:= false;
; ; CoolBar.Visible ;:= false;
; ; PanelFullScreen.Visible := true;
; ; OldWindowStyle:= GetWindowLong(Handle, GWL_STYLE);
; ; SetWindowLong(Handle, GWL_STYLE, OldWindowStyle and Not(WS_CAPTION));
; ; Height:= Height - GetSystemMetrics(SM_CYCAPTION);
; ; WindowState:= wsNormal;
; ; WindowState:= wsMaximized;
; ; LockWindowUpdate(0);
; end
; else
; begin
; ; LockWindowUpdate(Handle);
; ; StatusBar.Visible:= VisibleStatusBar;
; ; PanelFullScreen.Visible := false;
; ; Coolbar.Visible ;:= true;
; ; WindowState ; ; ;:= OldWindowState;
; ; SetWindowLong(Handle, GWL_STYLE, OldWindowStyle);
; ; Height:= Height + GetSystemMetrics(SM_CYCAPTION);
; ; if Visible then SetFocus;
; ; LockWindowUpdate(0);
; end;
end;