Seite 2 von 2
Verfasst: 22.07.2007 21:43
von RSBasic
@PureBasic4.0
Sehr gut
@HeX0R
>Extra für dich, hab ich es etwas veranschaulicht:
Sehr nett von dir, danke
Kann man auch, aber ich hab eigentlich immer so gemacht und hab trotzdem keine Probleme:
Code: Alles auswählen
If OpenWindow(0,0,0,100,100,"testwindow",#PB_Window_MinimizeGadget)
Repeat
EventID=WaitWindowEvent()
If GetWindowState(0)=#PB_Window_Minimize
Debug "Minimiert"
EndIf
If EventID = #PB_Event_CloseWindow
Quit=1
EndIf
Until Quit=1
EndIf
Na ok, es kann sein dass dein Beispiel-Code besser ist, weil du nur ein Event zurückbekommst.
Man kann so oder so machen
Na ok
Verfasst: 22.07.2007 21:59
von ts-soft
>> Man kann so oder so machen
Aber nur wenn man sein Programm umbedingt verlangsamen möchte
Keinen Code ausserhalb eines dafür vorgesehenen Ereignisses!
Wenn z.B. bei jedem überfahren eines Controlls mit der Maus
GetWindowState() ausgeführt wird, ist das schon sehr unschön

Verfasst: 22.07.2007 22:03
von Kaeru Gaman
> Keinen Code ausserhalb eines dafür vorgesehenen Ereignisses!
sehr richtig und absolut wichtig.
und noch ein hinweis:
Code: Alles auswählen
Case #PB_Event_MoveWindow
If GetWindowState(0) & #PB_Window_Minimize
Debug "Minimiert"
EndIf
unter Windows ist das korrespondierende ereignis #PB_Event_MoveWindow, wie hier gezeigt.
unter Linux muss man auf #PB_Event_SizeWindow reagieren.
die beiden OS handlen das minimieren unterschiedlich.
Verfasst: 22.07.2007 22:10
von RSBasic
@HeX0R & @ts-soft & @Kaeru Gaman
OK, das habe ich nicht gewusst.
Ich habs immer so programmiert, wenn ich mein Programm in die Systray beim Minimieren reinmachen wollte.
Es kam keine Fehlermeldungen, kein Performanceverlust entdeckt und daher war alles Schick für mich.
Ich kanns ja nachher, wenn ich an WT, SoT, AT, QS, 2DMEPB, QFM oder/und CAT weiter progge, wieder ändern
Danke für den Tipp

Verfasst: 22.07.2007 23:27
von edel
Kaeru Gaman hat geschrieben:> Keinen Code ausserhalb eines dafür vorgesehenen Ereignisses!
sehr richtig und absolut wichtig.
und noch ein hinweis:
Code: Alles auswählen
Case #PB_Event_MoveWindow
If GetWindowState(0) & #PB_Window_Minimize
Debug "Minimiert"
EndIf
unter Windows ist das korrespondierende ereignis #PB_Event_MoveWindow, wie hier gezeigt.
unter Linux muss man auf #PB_Event_SizeWindow reagieren.
die beiden OS handlen das minimieren unterschiedlich.
Normalerweise ist es WM_SIZE das dafuer sorgt das man die
Nachricht erhaelt. Warum das hier PB anders haelt ist mir schleierhaft.
Beispiel :
Code: Alles auswählen
Procedure _subclass_cb_(hWnd,uMsg,wParam,lParam)
If uMsg = #WM_SIZE
Select wParam
Case #SIZE_MINIMIZED
Debug "MINIMIZED"
Case #SIZE_RESTORED
Debug "RESTORED"
Case #SIZE_MAXIMIZED
Debug "MAXIMIZED"
EndSelect
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 100, 100, "", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
SetWindowCallback(@_subclass_cb_())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf