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?