Repeat : Until WaitWindowEvent()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Repeat : Until WaitWindowEvent()

Beitrag von Kiffi »

Pr0fessor hat geschrieben:noch eine frage zum verständnis:

würde die zeile

Code: Alles auswählen

repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
folgendes bedeuten?

Code: Alles auswählen

      Repeat
        WaitWindowEvent()
      Until WaitWindowEvent() = #PB_Event_CloseWindow
nein. Denn damit rufst Du 2mal WaitWindowEvent()
auf, was zur Folge hat, dass Ereignisse 'verschluckt'
werden.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Repeat : Until WaitWindowEvent()

Beitrag von RSBasic »

Wenn du innerhalb der Schleife einen "WaitWindowEvent" haben möchtest, dann mach es doch so:

Code: Alles auswählen

Repeat
  Event = WaitWindowEvent()
  ;Weitere Auswertungen...
Until Event = #PB_Event_CloseWindow
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Repeat : Until WaitWindowEvent()

Beitrag von Nino »

Pr0fessor hat geschrieben:noch eine frage zum verständnis:

würde die zeile

Code: Alles auswählen

repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
folgendes bedeuten?

Code: Alles auswählen

      Repeat
        WaitWindowEvent()
      Until WaitWindowEvent() = #PB_Event_CloseWindow
Nein, der Doppelpunkt kann lediglich durch einen Zeilenumbruch ersetzt werden.
Siehe Allgemeine Syntax-Regeln.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Repeat : Until WaitWindowEvent()

Beitrag von STARGÅTE »

Code: Alles auswählen

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Dieser Code wird eigentlich nur in sehr kurzen Beispielcode für Windows und Gadgets genutzt, weil er sicherstellt, dass Events verarbeitet werden und das Programm beim [X] drücken beendet wird.

Wenn du ein richtiges Programm schreiben möchtest, solltest du die Events richtig auswerten, und die Schleife zB so aufbauen:

Code: Alles auswählen

Repeat
	
	Select WaitWindowEvent()
			
		Case #PB_Event_CloseWindow
			Break ; aus der Schleife springen, hier kann auch "End" verwendet werden.
			
		Case #PB_Event_Gadget
			Select EventGadget() ; In welchem Gadget gabs ein Event
				Case #GadgetNummer
					Select EventType() ; Welcher Eventtyp liegt vor?
						Case #PB_EventType_LeftClick
							;...
					EndSelect
							;...
			EndSelect
			
		Case #PB_Event_Menu
			Select EventMenu() ; Welcher Menüeintrag wurde angeklickt.
				Case #MenuItem
					;...
			EndSelect
			
	EndSelect
	
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Pr0fessor
Beiträge: 40
Registriert: 21.07.2011 16:13
Computerausstattung: Intel Qore2Quad Q6600, 4GB RAM, Radeon HD 5770, Windows 8.1 Pro 64bit
Wohnort: Hagenow
Kontaktdaten:

Re: Repeat : Until WaitWindowEvent()

Beitrag von Pr0fessor »

Danke für die vielen aufschlussreichen antworten - jetzt weiß ich bescheid.

(auch super finde ich dass das Forum so eine gute community besitzt indem man schnell geholfen wird. :praise: )
~ PureBasic 5.21 LTS x86 | PureBasic 5.21 LTS x64 | Windows 8.1 Pro with Media Center x64 ~
Antworten