Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
Delphi 11 Alexandria
|
Snap Assist - Wie wird das "Vorschaufenster-Rect" bestimmt?
9. Nov 2021, 15:16
Ich verwende ab und zu bsSizeable Fenster mit konstantem Seitenverhältnis ClientWidth:ClientHeight.
Wenn ich zum Beispiel den unteren Rand eines solchen Fensters an den unteren Rand des Arbeitsbereichs ziehe, dann will Windows "einschnappen" und zeigt mir mittels Rahmen an, wo das eingeschnappte Fenster zu liegen käme.
Wie übermittle ich an Windows das Rechteck des eingeschnappten Fensters?
Mein Programm reagiert auf WM_Sizing, via LParam gebe ich den Pointer aufs jeweilige Rect zurück. Der Rahmen des eingeschnappten Fensters wird in Windows 6.3.9600, 10.0.17763.2237 korrekt angezeigt.
Bei 10.0.19044.1320 hingegen zeigt Windows einen Rahmen an, welcher (im vorliegenden Fall erwartet) so hoch wie der Arbeitsbereich ist, die Breite entspricht aber nur der momentanen Breite des Fensters. WM_Sizing wird beim "Schnappen?" ausgelöst, 10.0.19044.1320 scheint aber die Rückgabe des Rechtecks nicht zu beachten.
Wenn ich das Fenster einschnappen lasse, dann wird das Fenster in allen Windows Versionen korrekt dargestellt.
Weiss irgendwer, wie ich das verbessern kann?
Michael Gasser
Geändert von Michael II ( 9. Nov 2021 um 16:15 Uhr)
|