Seite 1 von 2

Überprüfen, ob ein Window minimiert wurde?

Verfasst: 22.07.2007 21:14
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?

Verfasst: 22.07.2007 21:20
von RSBasic
@PureBasic4.0
Innerhalb der Repeat-Schleife:

Code: Alles auswählen

If GetWindowState(0)=#PB_Window_Minimize
  HideWindow(0,1)
  ;...(Systray...)
EndIf

Verfasst: 22.07.2007 21:22
von PureBasic4.0
danke, das funktioniert jetzt!

Aber was ist mit den Images? Wieso kann ich die nicht laden?

Verfasst: 22.07.2007 21:23
von RSBasic
@PureBasic4.0
Dein Image muss im 16x16.ico-Format vorliegen

Verfasst: 22.07.2007 21:24
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...

Verfasst: 22.07.2007 21:25
von PureBasic4.0
Danke @all, die mitgeholfen haben!

Funzt jetzt alles!

Verfasst: 22.07.2007 21:26
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:

Verfasst: 22.07.2007 21:31
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...

Verfasst: 22.07.2007 21:34
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

Verfasst: 22.07.2007 21:35
von PureBasic4.0
//edit: Ich hab's geschafft. :lol: