Hallo
Im maximierten Zustand ist ja die
Titelleiste ein wenig in der Höhe kleiner. Also sie wird wegen dem Rahmen etwas unter der 0 Position (also Top < 0 ; je nach Rahmendicke wohl) angezeigt. Das hat mir noch nie gefallen. Ich habe jetzt mit
Delphi-Quellcode:
procedure TForm1.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
Var BW : Integer;
AR : TRect;
begin
inherited;
SystemParametersInfo(SPI_GETWORKAREA, 0, @AR, 0);
BW := GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CXPADDEDBORDER);
Message.MinMaxInfo.ptMaxPosition.SetLocation(AR.Left-BW,0);
Message.MinMaxInfo.ptMaxSize.SetLocation(AR.Width+BW+BW,AR.Height-1); // ohne "-1" geht es nicht
Message.MinMaxInfo.ptMaxTrackSize := Message.MinMaxInfo.ptMaxSize;
end;
und noch in Verbindung mit
Delphi-Quellcode:
procedure TForm1.WM_NCCalcSize(var Msg: TWMNCCalcSize);
Var BW : Integer;
begin
inherited;
BW := GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CXPADDEDBORDER);
if windowstate = wsMaximized then inc(Msg.CalcSize_Params.rgrc[0].Bottom,BW);
end;
erreicht, dass die
Titelleiste im maximierten Zustand gleich groß bleibt. Also Top=0. Das schaut schöner aus
Wenn man die Taskleiste vergrößert oder verschiebt (während das
Fenster nun maximiert ist), geht der Effekt leider verloren. Also die
Titelleiste wird dann wieder unter 0 (Top-Position) angezeigt. WM_GETMINMAXINFO wird aber bei so einer Aktion aufgerufen. Wohl etwas zu spät denn wenn ich manuell das
Fenster wieder verkleinere und vergrößere, dann geht es wieder. Weiß jemand wie ich das besser machen kann?