WindowEvent Maximize, wie die Ursprungsgröße speichern
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
WindowEvent Maximize, wie die Ursprungsgröße speichern
Hallo zusammen,
wenn ich den Event #PB_Event_Maximize abfange um den für spätere Starts eines Programms zu speichern, passiert folgendes:
- Ich klicke auf Maximieren
- 1. Event #PB_Event_Move
- 2. Event #PB_Event_Size
- 3. Event #PB_Event_Maximize
Sobald ich also den Event abfange sind schon durch Size und Move die Koordinaten auf dem Maximum. Ich habe also keine möglichkeit die vorigen Koordinaten mehr abzufragen. Der Fenstermanager aber behält diese Koordinaten irgendwo, denn wenn ich Maximieren rückkängig mache (#PB_Event_Restore) erhält das Fenster die vorige Größe.
Wie komme ich an diese vorigen Koordinaten heran ?
Danke schonmal für Eure Hilfe.
wenn ich den Event #PB_Event_Maximize abfange um den für spätere Starts eines Programms zu speichern, passiert folgendes:
- Ich klicke auf Maximieren
- 1. Event #PB_Event_Move
- 2. Event #PB_Event_Size
- 3. Event #PB_Event_Maximize
Sobald ich also den Event abfange sind schon durch Size und Move die Koordinaten auf dem Maximum. Ich habe also keine möglichkeit die vorigen Koordinaten mehr abzufragen. Der Fenstermanager aber behält diese Koordinaten irgendwo, denn wenn ich Maximieren rückkängig mache (#PB_Event_Restore) erhält das Fenster die vorige Größe.
Wie komme ich an diese vorigen Koordinaten heran ?
Danke schonmal für Eure Hilfe.
---
Windows 11 (64 bit)
Windows 11 (64 bit)
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
Hallo Makke
Einfach mit WindowHeight(),WindowWidth(), WindowX() und WindowY() vorher abfragen, merken
und auf das Event warten.
Walter
Einfach mit WindowHeight(),WindowWidth(), WindowX() und WindowY() vorher abfragen, merken
und auf das Event warten.
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.
Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
Ich mache es so, wenn die Anwendung geschlossen wird:
Code: Alles auswählen
HideWindow(#Window, #True) ; scheinbar das Fenster schließen
SetWindowState(#Window, #PB_Window_Normal) ; auf Normal größe setzen
X = WindowX(#Window) ; abfragen
Y = ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
Ich mache es anders
Ich bestücke Variablen bei jedem relevantem Event und nutze diese Werte beim beenden, ansonsten
sieht man das Verstecken und Resizen am Ende, ist sehr unschön.
Natürlich nur wenn der WindowsState Normal ist.
Ich bestücke Variablen bei jedem relevantem Event und nutze diese Werte beim beenden, ansonsten
sieht man das Verstecken und Resizen am Ende, ist sehr unschön.
Natürlich nur wenn der WindowsState Normal ist.
Code: Alles auswählen
EnableExplicit
Global normal_x = #PB_Ignore, normal_y = #PB_Ignore, normal_width = 640, normal_hight = 480
Procedure WinMove()
If GetWindowState(0) = #PB_Window_Normal
normal_width = WindowWidth(0)
normal_hight = WindowHeight(0)
EndIf
; ...
EndProcedure
Procedure WinSize()
If GetWindowState(0) = #PB_Window_Normal
normal_x = WindowX(0)
normal_y = WindowY(0)
EndIf
; ...
EndProcedure
#winflags = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget
OpenWindow(0, normal_x, normal_y, normal_width, normal_hight, "", #winflags)
BindEvent(#PB_Event_MoveWindow, @WinMove(), 0)
BindEvent(#PB_Event_SizeWindow, @WinSize(), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
EndSelect
ForEver
Debug GetWindowState(0)
Debug normal_x
Debug normal_y
Debug normal_width
Debug normal_hight
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
Hallo,
erstmal danke für Eure Antworten.
@ts-soft und waldixxl: das funktioniert so leider nicht, da ja der Event Maximize nach dem Event Size kommt
@stargate: danke, das ist eine interessanter "workaround"
erstmal danke für Eure Antworten.
@ts-soft und waldixxl: das funktioniert so leider nicht, da ja der Event Maximize nach dem Event Size kommt
@stargate: danke, das ist eine interessanter "workaround"
---
Windows 11 (64 bit)
Windows 11 (64 bit)
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
Ups, gehört sich eigentlich nicht auf die eigene Antwort zu antworten, aber mir ist gerade aufgefallen, das Xubuntu 14.04 (LTS) den Maximize Event anscheinend nicht richtig verarbeitet.
Könnt Ihr bestätigen, das bei folgendem Code:
Der Event Minimize 1024 ist, der Event Normal oder Maximize jedoch 0 ?
Könnt Ihr bestätigen, das bei folgendem Code:
Code: Alles auswählen
If OpenWindow(0, 0, 0 , 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
Repeat
Debug GetWindowState(0)
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
---
Windows 11 (64 bit)
Windows 11 (64 bit)
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
Deswegen wird doch der State überprüft, bei mir funktioniert es jedenfalls in vielen ProgrammenMakke hat geschrieben:@ts-soft und waldixxl: das funktioniert so leider nicht, da ja der Event Maximize nach dem Event Size kommt
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
Re: WindowEvent Maximize, wie die Ursprungsgröße speichern
U. U. liegt das evtl. an meiner Linux Version. Hier kommt erst der Event "Resize", der Status des Fensters ist dann aber noch "Normal", da der "Maximize" Event erst danach kommt und auch dann hat das Fenster erst den Status "Maximiert".ts-soft hat geschrieben:Deswegen wird doch der State überprüft, bei mir funktioniert es jedenfalls in vielen Programmen
Ich habe das aber jetzt wie folgt gelöst:
Code: Alles auswählen
Enumeration
#MyWindow
EndEnumeration
define.l width, height
gtk_window_get_size_(WindowID(#MyWindow), @width, @height)
---
Windows 11 (64 bit)
Windows 11 (64 bit)