Seite 1 von 1

WaitWindowEvent

Verfasst: 07.10.2013 10:25
von Angelo
In der Hilfe steht, dass WaitWindowEvent() wartet, bis ein Ereignis auftritt. Aber im folgenden Code wird der Kontrollparameter i weitergezählt, auch wenn man nichts macht und somit kein Ereignis vorhanden ist:

Code: Alles auswählen

#window = 0
#combo = 0

OpenWindow(#window, 0, 0, 200, 100, "Test", #PB_Window_SystemMenu| #PB_Window_ScreenCentered)
ComboBoxGadget(#combo, 10, 10, 150, 20, #PB_ComboBox_Editable)
SetActiveGadget(#combo)

i = 0

Repeat
   
   Event = WaitWindowEvent()
   
   If EventGadget() = #combo
      i + 1
      Debug i
   EndIf
   
Until Event = #PB_Event_CloseWindow   
Dann darf man also es nicht wörtlich nehmen, wenn von "Warten" gesprochen wird oder ist das nur für diesen Fall so?

Re: WaitWindowEvent

Verfasst: 07.10.2013 10:29
von RSBasic
Liegt eher daran, dass deine ComboBox aktiv ist. Wenn du SetActiveGadget() entfernst, dann gibt es keine regelmäßigen Zwischenevents.

Re: WaitWindowEvent

Verfasst: 07.10.2013 10:31
von Angelo
Ja, außerdem habe ich die Abfrage "If event = #PB_Event_Gadget" vergessen.

Re: WaitWindowEvent

Verfasst: 07.10.2013 10:40
von ts-soft
Ausserdem gibt es noch mehr Events, als nur Click :mrgreen:
Zum Beispiel die ganzen Mausereignisse, die Ereignisse zum Neuzeichnen usw.
Auch wenn Du viele davon nicht nutzt, durchbrechen sie das WaitWindowsEvent()
Es ist deshalb auch immer wichtig, das EventLoop genau in der richtigen
Reihenfolge, mit EventGadget(), EventType() usw. abzufragen und nicht einfach
auf irgendwelche Ereignisse zu reagieren. Gerade das ComboBox erzeugt sehr
viele Events.

Gruß
Thomas