WaitWindowEvent

Anfängerfragen zum Programmieren mit PureBasic.
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

WaitWindowEvent

Beitrag 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?
PB 5.50; Win 7
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WaitWindowEvent

Beitrag von RSBasic »

Liegt eher daran, dass deine ComboBox aktiv ist. Wenn du SetActiveGadget() entfernst, dann gibt es keine regelmäßigen Zwischenevents.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: WaitWindowEvent

Beitrag von Angelo »

Ja, außerdem habe ich die Abfrage "If event = #PB_Event_Gadget" vergessen.
PB 5.50; Win 7
Benutzeravatar
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: WaitWindowEvent

Beitrag 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
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.
Bild
Antworten