Überprüfen, ob ein Window minimiert wurde?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Überprüfen, ob ein Window minimiert wurde?

Beitrag von PureBasic4.0 »

Hi, Leute

ich möchte überprüfen, ob der Benutzer auf das Window_Minimize Gadget gedrückt hat. In der Befehlsreferenz habe ich nichts gefunden und auch die SuFu hat nichts passendes ergeben. Einfach zu überprüfen, ob das Window keinen Fokus mehr hat, reicht mir nicht aus. Wie geht das? API? Callback?

Wenn das Window dann erstmal minimized ist, soll sich das window hiden und ein SysTray Icon einfügen.

Code:

Code: Alles auswählen

Enumeration
  #Icon1
  #Icon2
  #Icon3
  #Icon4
EndEnumeration

UsePNGImageDecoder()

DataSection
  Pic1:IncludeBinary "img\1.png"
  Pic2:IncludeBinary "img\2.png"
  Pic3:IncludeBinary "img\3.png"
  Pic4:IncludeBinary "img\4.png"
EndDataSection

Debug CatchImage(#Icon1,@Pic1)
Debug CatchImage(#Icon2,@Pic2)
Debug CatchImage(#Icon3,@Pic3)
Debug CatchImage(#Icon4,@Pic4)
Leider gibt CatchImage immer 0 zurück. Die Dateien gibt es mit Sicherheit, aber woran kann es liegen, dass das Programm die Daten einfach nicht laden will?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@PureBasic4.0
Innerhalb der Repeat-Schleife:

Code: Alles auswählen

If GetWindowState(0)=#PB_Window_Minimize
  HideWindow(0,1)
  ;...(Systray...)
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

danke, das funktioniert jetzt!

Aber was ist mit den Images? Wieso kann ich die nicht laden?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@PureBasic4.0
Dein Image muss im 16x16.ico-Format vorliegen
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Nicht in der Repeatschleife, sondern nach einem #PB_Event_MoveWindow (oder war es nach einem #PB_Event_SizeWindow ? *grübel*)

Und die zweite Frage, die so gar nix mit der ersten zutun hat:
Nimm Fragezeichen anstatt Klammeraffen...
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

Danke @all, die mitgeholfen haben!

Funzt jetzt alles!
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@HeX0R
Nicht in der Repeatschleife, sondern nach einem #PB_Event_MoveWindow (oder war es nach einem #PB_Event_SizeWindow ? *grübel*
:?
#PB_Event_MoveWindow = Wird ermittelt, ob das Fenster verschoben wurde
#PB_Event_SizeWindow = Wird ermittelt, ob die Größe des Fensters geändert wurde.

Also #PB_Window_Minimize ist schon richtig, diese Variante benutze ich schon lange und funktioniert immer.

@Edit:
Na egal, das Problem wurde sowieso behoben :mrgreen:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

Nochmal ne Frage: Wie ist das, wenn das Window wiederhergestellt wurde? Habe schon was mit #pb_window_normal versucht, will aber irgendwie nicht so wirklich fruchten...
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

RSBasic hat geschrieben:@HeX0R
Nicht in der Repeatschleife, sondern nach einem #PB_Event_MoveWindow (oder war es nach einem #PB_Event_SizeWindow ? *grübel*
:?
#PB_Event_MoveWindow = Wird ermittelt, ob das Fenster verschoben wurde
#PB_Event_SizeWindow = Wird ermittelt, ob die Größe des Fensters geändert wurde.

Also #PB_Window_Minimize ist schon richtig, diese Variante benutze ich schon lange und funktioniert immer.
Extra für dich, hab ich es etwas veranschaulicht:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 100, 100, "", #PB_Window_MinimizeGadget)
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				Break
			Case #PB_Event_MoveWindow
				If GetWindowState(0) & #PB_Window_Minimize
					Debug "Minimiert"
				EndIf
		EndSelect
	ForEver
EndIf
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

//edit: Ich hab's geschafft. :lol:
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Antworten