Unbeantwortete Themen | Aktive Themen
|
Seite 1 von 1
|
[ 3 Beiträge ] |
|
Autor |
Nachricht |
DePe
|
Betreff des Beitrags: Fensterposition und Windows Einrastfunktion Verfasst: 07.09.2020 10:45 |
|
Registriert: 26.11.2017 16:17
Wohnort: Wien
|
Ich speichere bei meinem Programm die Fensterposition, -größe und Zustand (Min/Max). Dafür verwende ich die API-Funktionen Get/SetWindowPlacement_(). Wenn man aber ein Fenster mit den 'Einrastfunktionen' von Windows vergrößert, z.B. Windows-Taste + Cursor Links, sind die ermittelten Werte, die Werte vor dem Einrasten. Ist irgendwie logisch, da das Fenster ja auch wieder in der ursprünglichen Größe wiederhergestellt werden kann.
Kann man die eingerastete Fensterposition und -größe ermitteln?
Peter
Edit: Also mit den PB WindowX/Y/Width/Height-Funktionen funktioniert es schon, aber diese Werte stimmen nicht ganz, darum verwende ich die API-Funktionen.
Mit WindowX(#Window, #PB_Window_FrameCoordinate) bekomme ich 5, obwohl das Fenster ganz links am Bildschirmrand steht. Mit SetWindowPlacement_() bekomme ich 0, bei Windows 10 ist es -6, wegen den Fensterschatten, aber das kann ich berücksichtigen bzw. berechnen mit DwmGetWindowAttribute.
|
|
Nach oben |
|
 |
DePe
|
Betreff des Beitrags: Re: Fensterposition und Windows Einrastfunktion Verfasst: 07.09.2020 12:34 |
|
Registriert: 26.11.2017 16:17
Wohnort: Wien
|
Mit GetWindowRect_() bekomme ich die richtigen Werte. Ich muss noch nachlesen bzw. testen ob die Werte auch für SetWindowPlacement_() verwendet werden können. Manche Funktionen verwenden unterschiedliche Referenzpunkte, wie z.B. SetWindowPos und SetWindowPlacement.
Peter
|
|
Nach oben |
|
 |
DePe
|
Betreff des Beitrags: Re: Fensterposition und Windows Einrastfunktion Verfasst: 07.09.2020 18:48 |
|
Registriert: 26.11.2017 16:17
Wohnort: Wien
|
Ich habe jetzt alles auf PureBasic-Funktionen umgestellt, und es funktioniert auch beinahe alles richtig. Bei mehreren Monitoren mit unterschiedlicher Skalierung, stimmt die Berechnung nicht bei der Überprüfung ob ein Fenster noch sichtbar ist. Es wird immer die Skalierung vom Hauptmonitor verwendet. Wenn man in PureBasic noch die Desktop-Funktionen wie DesktopUnscaled() usw. für alle vorhandenen Monitore verwenden könnte, wäre es beinahe perfekt.
Keine weiteren Fragen, hat sich (fast) alles erledigt.
Peter
|
|
Nach oben |
|
 |
|
Seite 1 von 1
|
[ 3 Beiträge ] |
|
Wer ist online? |
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste |
|
Sie dürfen keine neuen Themen in diesem Forum erstellen. Sie dürfen keine Antworten zu Themen in diesem Forum erstellen. Sie dürfen Ihre Beiträge in diesem Forum nicht ändern. Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
|