Aktuelle Zeit: 22.01.2021 05:19

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fensterposition und Windows Einrastfunktion
BeitragVerfasst: 07.09.2020 10:45 
Offline

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
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterposition und Windows Einrastfunktion
BeitragVerfasst: 07.09.2020 12:34 
Offline

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
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fensterposition und Windows Einrastfunktion
BeitragVerfasst: 07.09.2020 18:48 
Offline

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
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye