Events und Gadgets

Anfängerfragen zum Programmieren mit PureBasic.
Tanaghra
Beiträge: 28
Registriert: 13.05.2017 01:44

Events und Gadgets

Beitrag von Tanaghra »

Hallo,

wenn man sich in der Hilfe die Ausführungen zur Ereignisprogrammierung (WaitWindowEvent(), EventGadget() usw.) durchliest, wirkt es auf den ersten Blick recht einfach. Aber auch wirklich nur auf den ersten Blick, weil die Beispiele dort so simpel sind, wie sie es in einer konkreten Anwendung nie sind. Also:

Ich habe eine Repeat-Until-Schleife geschrieben, der Grundstruktur aber noch etwas hinzugefügt:

Code: Alles auswählen

Repeat
  Ek=WaitWindowEvent()  ; Ereigniskonstante
  If Ek=#PB_Event_Gadget
    Select EventGadget()
      Case #Op_1
        …
      Case #Op_2
        …
      Case #Chb_1
        …
        …
      Default
        …
    EndSelect
  Else
    …
  EndIf
Until Ek=#PB_Event_CloseWindow
Gegenüber den Beispielen in der Hilfe habe ich den Default-Zweig und den Else-Part hinzugefügt. Wie ich herausgefunden habe, wird der Else-Part immer angesprungen, weil die ersten Ereignisse, die eintreten, wenn sich ein Fenster öffnet, #PB_Event_ActivateWindow und #PB_Event_Repaint sind, gefolgt von einer unterschiedlichen Anzahl von #PB_Event_None-"Ereignissen" und diversem anderem Kram.

Was mir Kopfzerbrechen bereitet, ist der Default-Part. Nach meinem Verständnis dürfte er nie angesprungen werden. Denn der If-Part wird nur ausgeführt, wenn ein Gadget angeklickt wurde. O-Ton der Hilfe:
Nach dem Auftreten eines #PB_Event_Gadget Ereignisses … wird diese Funktion verwendet, um herauszufinden, bei welchem Gadget das Ereignis ausgelöst wurde.
Das hört sich für mich so an, daß ein #PB_Event_Gadget-Ereignis dann und nur dann auftritt, wenn ein Gadget angeklickt wurde. Wenn ein Gadget angeklickt wurde, dann gibt EventGadget() die Nummer des angeklickten Gadgets zurück. Was eigentlich nach dieser Theorie nicht sein kann, ist, daß ein #PB_Event_Gadget-Ereignis auftritt und EventGadget() -1 zurückgibt; denn kein angeklicktes Gadget kann die Nummer -1 haben.

Genau das passiert aber bei mir. Wenn man in den Default-Zweig Debug Ek und Debug EventGadget() schreibt, wirft der Debugger als Ergebnis 13100 (Id für #PB_Event_Gadget) und -1 aus. Das läßt nur den Schluß zu, daß das Ereignis #PB_Event_Gadget auch dann eintritt, wenn gar kein Gadget angeklickt wurde.

Wo liegt mein Denkfehler?

Vielen Dank
Windows 7 x64; geposteter Kode bezieht sich (sofern nicht anders angegeben) immer auf das aktuellste PureBasic 64-Bit

Erst wenn man es seiner Schwiegermutter erklären kann, hat man es verstanden.
As gsündeste is oiwei guad essn und dringa und ned grang wern.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Events und Gadgets

Beitrag von RSBasic »

Tanaghra hat geschrieben:Das hört sich für mich so an, daß ein #PB_Event_Gadget-Ereignis dann und nur dann auftritt, wenn ein Gadget angeklickt wurde.
Das muss nicht nur Klicks sein. Je nach Gadgets können unterschiedliche Events auftreten. Z.B. auch Tastatureingaben bei StringGadgets oder Focus, LostFocus, Drag u.ä.
Tanaghra hat geschrieben:EventGadget() -1 zurückgibt
Rufst du EventGadget() wirklich immer innerhalb der #PB_Event_Gadget-Abfrage auf?
Ich habe mit eigenem Beispielcode versucht, es nachzustellen, aber bei mir wird kein -1 zurückgegeben. Nur 0, wenn außerhalb.
Kannst du versuchen, einen kleinen, funktionierenden Beispielcode bereitstellen, damit man das -1-Problem sofort sehen kann?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Tanaghra
Beiträge: 28
Registriert: 13.05.2017 01:44

Re: Events und Gadgets

Beitrag von Tanaghra »

Hallo RSBasic,

danke für Deine Antwort.
Das muss nicht nur Klicks sein. Je nach Gadgets können unterschiedliche Events auftreten. Z.B. auch Tastatureingaben bei StringGadgets oder Focus, LostFocus, Drag u.ä.
Das ist mir klar. Mir geht es ausschließlich darum, wann genau ein #PB_Event_Gadget-Ereignis eintritt; #PB_EventType_Focus und #PB_EventType_LostFocus sind ja (wenn ich das richtig verstanden habe) keine Ereignisse, sondern Ereignistypen, und werden von EventType() zurückgegeben, nicht von EventGadget().
Und nach meinem bisherigen Verständnis kann es nicht sein, daß EventGadget() den Wert -1 zurückgibt, wenn zuvor ein #PB_Event_Gadget-Ereignis eingetreten ist -- einfach rein technisch nicht, weil EventGadget() nur Nummern von Gadgets zurückgibt, und -1 ist keine gültige Gadget-Nummer. Genau das passiert aber bei mir, und zwar im Default-Zweig. Also anders gefragt: Unter welchen Voraussetzungen gibt EventGadget() -1 zurück?
Kannst du versuchen, einen kleinen, funktionierenden Beispielcode bereitstellen, damit man das -1-Problem sofort sehen kann?
Bitte sehr:

Code: Alles auswählen

EnableExplicit

Define EId, GNr  ; Ereignis-Id, Gadget-Nummer

Enumeration FormGadget
  #Bz_TD
  #Bz_TE
  #Ef_TD
  #Ef_TE
  #Sf_Kl
EndEnumeration

LoadFont(1,"MS Sans Serif", 10)
SetGadgetFont(#PB_Default, FontID(1))

OpenWindow(1, 0, 0, 330, 95, "Testfenster", #PB_Window_SystemMenu|
  #PB_Window_ScreenCentered)
TextGadget(#Bz_TD, 10, 10, 100, 20, "Testfeld Default:")
TextGadget(#Bz_TE, 10, 35, 85, 20, "Testfeld Else:")
StringGadget(#Ef_TD, 112, 8, 205, 20, "Ereignis-ID: 65100, Gadget-ID: 15")
StringGadget(#Ef_TE, 112, 32, 205, 20, "Ereignis-ID: 65100, Gadget-ID: 15")
ButtonGadget(#Sf_Kl, 115, 60, 85, 25, "Klick !")

Repeat
  EId=WaitWindowEvent(): GNr=EventGadget()
  If EId=#PB_Event_Gadget
    Select EventGadget()
      Case #Sf_Kl
        SetGadgetText(#Sf_Kl, "Angeklickt!")
        SetGadgetText(#Ef_TE, "Ereignis-ID: "+Str(EId)+", Gadget-Nr: "+Str(EventGadget()))
      Default
        SetGadgetText(#Ef_TD, "Ereignis-ID: "+Str(EId)+", Gadget-Nr: "+Str(GNr))
    EndSelect
  Else
    SetGadgetText(#Ef_TE, "Ereignis-ID: "+Str(EId)+", Gadget-Nr: "+Str(EventGadget()))
  EndIf
Until EId=#PB_Event_CloseWindow

CloseWindow(1)
End
Wenn ich den Kode ausführe, erscheint bei mir in den StringGadgets folgender Text:
Ereignis-ID: 13100, Gadget-Nr: -1
Ereignis-ID: 15, Gadget-Nr: 0
Also genau, wie ich es beschrieben habe: Das eingetretene Ereignis ist 13100 (= #PB_Event_Gadget), die Gadget-Nr ist -1. Du kannst auch im Default-Zweig einen Haltepunkt setzen und dann im Debugger die Werte von EId und GNr "von Hand" abfragen; das Ergebnis ist dasselbe (bei mir jedenfalls).

Klickt man auf das erste StringGadget, ändert sich der angezeigte Text in
Ereignis-ID: 13100, Gadget-Nr: 2
Ereignis-ID: 15, Gadget-Nr: 2
Ist ja auch logisch. Bei Klick auf das zweite StringGadget ändert sich Gadget-Nr.: entsprechend auf 3.

Aus irgendeinem Grund wird, wenn ich den Kode startet, mein Button (#Sf_Kl) nicht angezeigt. Irgendeine Idee, wieso nicht? Erst wenn man auf die leere Stelle (wo es laut FormDesigner eigentlich stehen sollte) unterhalb des zweiten StringGadgets, etwa in der horizontalen Mitte, klickt, erscheint es.

Aber wie Ereignis-ID=13100=#PB_Event_Gadget und Gadget-Nr=-1 zusammenpassen, ist mir immer noch nicht klar.

Gruß
Windows 7 x64; geposteter Kode bezieht sich (sofern nicht anders angegeben) immer auf das aktuellste PureBasic 64-Bit

Erst wenn man es seiner Schwiegermutter erklären kann, hat man es verstanden.
As gsündeste is oiwei guad essn und dringa und ned grang wern.
Benutzeravatar
Bisonte
Beiträge: 2429
Registriert: 01.04.2007 20:18

Re: Events und Gadgets

Beitrag von Bisonte »

Es wird daran liegen, dass Du ALLES was so ein Gadget an Events liefert, als gültig ansiehst !

Das ist es aber keineswegs.

Beim StringGadget z.B. werden nur die EventTypes : #PB_EventType_Change, #PB_EventType_Focus, #PB_EventType_LostFocus.

Und nur wenn einer dieser drei EventTypes anliegt, wird auch ein gültiges EventGadget() vorhanden sein.
Unter den OS gibt es noch viele andere Eventtypes für z.B. das StringGadget.
Da PB diese aber nicht offiziell (das heisst in der Hilfe auch dokumentiert) unterstützt, wird das EventGadget()
auf -1 gesetzt, damit es kein Chaos gibt.

Das gleiche z.B. bei einem CanvasGadget. Da gibt es eine Vielzahl von EventTypes. Wenn man da einfach nur fragt :
Hat das Gadget ein Event Ausgelöst ? dann ist das Chaos vorprogrammiert, weil wenn man mit der Maus drüberfährt,
wird schon ein Ereignis ausgelöst. und Das ist ja beileibe kein Klick.

Die einzigen Gadgets, die wirklich nur auf EventGadget() abfragbar sind, sind meines Wissens ButtonGadget() und ButtonImageGadget().
ALLE anderen hat man auch nach den EventTypes abzufragen, sonst kommt es zu diesem Chaos, das du da grad vor dir hast.

Edit: Ausserdem bei einer Select EndSelect Abfrage wird das Default IMMER dann benutzt, wenn KEINER der vorangegangenen CASE Anweisungen gepasst hat. In deinem Beispiel wird in dem Select Block NUR nach dem Button ausschau gehalten, bei allen anderen
Gadgetnummern wird das Default ausgeführt. Also auch bei "ungültigen" Nummern.
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Tanaghra
Beiträge: 28
Registriert: 13.05.2017 01:44

Re: Events und Gadgets

Beitrag von Tanaghra »

Hallo Bisonte,

danke für Deine Antwort.
Es wird daran liegen, dass Du ALLES was so ein Gadget an Events liefert, als gültig ansiehst !
Also nach meinem bisherigen Verständnis liefern Gadgets keine Events. WindowEvent() und WaitWindowEvent() liefern Events, wie z.B. das Event #PB_Event_Gadget (Gadget angeklickt) oder #PB_Event_ActivateWindow (Fenster hat den Fokus erhalten) und die anderen in der Hilfe bei WindowEvent() genannten. Und noch einige mehr, die dort nicht genannt sind, wie #PB_Event_None oder #WM_MOUSEMOVE.

Die von Dir genannten #PB_EventType_Change, #PB_EventType_Focus und #PB_EventType_LostFocus sind dagegen keine Events, sondern EventTypes. Ich glaube, wenn man beides gleichsetzt, dann ist das Chaos vorprogrammiert.

Aber das Entscheidende scheint mir etwas anderes zu sein. Wann wird in meinem Beispiel der If-Part ausgeführt? Wenn ein Gadget angeklickt wurde. Wenn ein StringGadget angeklickt wurde, dann liefert EventGadget() die Gadget-Nr. des angeklickten StringGadgets zurück. Dieses StringGadget hat auf jeden Fall eine von -1 verschiedene Nummer. Das heißt, die Frage nach dem EventType (#PB_EventType_Change, #PB_EventType_LostFocus oder was auch immer) stellt sich gar nicht mehr. Auch wenn der EventType keiner von den "offiziellen" ist (wie Du schreibst), ändert das ja nicht die Nummer des StringGadgets.
Hat das Gadget ein Event Ausgelöst ? dann ist das Chaos vorprogrammiert, weil wenn man mit der Maus drüberfährt,
wird schon ein Ereignis ausgelöst. und Das ist ja beileibe kein Klick.
Die Mausbewegung ist kein Event, das vom Gadget registriert wird, sondern von WaitWindowEvent. Dieses Ereignis heißt #WM_MOUSEMOVE und wird in der Variablen Ek (in meinem ersten Beispiel) bzw. EId (in meinem zweiten Beispiel) abgelegt. #WM_MOUSEMOVE ist genauso ein Ereignis wie #PB_Event_Gadget, d.h. beide haben zunächst einmal nichts miteinander zu tun. Wenn #WM_MOUSEMOVE aufgetreten ist, kann zum If-Part schon mal nicht verzweigt werden, da eben kein Gadget angeklickt wurde, sondern eine Mausbewegung stattgefunden hat.
Ausserdem bei einer Select EndSelect Abfrage wird das Default IMMER dann benutzt, wenn KEINER der vorangegangenen CASE Anweisungen gepasst hat. In deinem Beispiel wird in dem Select Block NUR nach dem Button ausschau gehalten, bei allen anderen Gadgetnummern wird das Default ausgeführt. Also auch bei "ungültigen" Nummern.
Du hast recht, in meinem Select-Block werden nicht alle vorhandenen Cases berücksichtigt, und deshalb wird der Default-Zweig angesprungen. Aber das Verzweigen in den Default-Zweig ändert ja ebenfalls nichts an der Gadget-Nr., die EventGadget() zurückgeliefert hat, und die kann nicht -1 ein, wenn ein im Fenster vorhandenes Gadget das #PB_Event_Gadget-Ereignis ausgelöst hat. EventGadget() ist es ja völlig egal, ob die von ihm zurückgegebene Gadget-Nr. in einem der Cases vorkommt oder nicht.

Oder schreibe ich irgendwo vollkommenen Unfug? Dann bitte ich um Aufklärung.

Gruß
Windows 7 x64; geposteter Kode bezieht sich (sofern nicht anders angegeben) immer auf das aktuellste PureBasic 64-Bit

Erst wenn man es seiner Schwiegermutter erklären kann, hat man es verstanden.
As gsündeste is oiwei guad essn und dringa und ned grang wern.
Benutzeravatar
Bisonte
Beiträge: 2429
Registriert: 01.04.2007 20:18

Re: Events und Gadgets

Beitrag von Bisonte »

Ein Event ist ein Ereignis, das wiederum ein EventType haben kann!
Also nach meinem bisherigen Verständnis liefern Gadgets keine Events. WindowEvent() und WaitWindowEvent() liefern Events
WaitWindowEvent() und WindowEvent() sind nur zum erfragen, welches Event gerade an das Fenster gesendet wurde.
Eigentlich generiert in einem OS alles mögliche ein Event. Fenster, Gadgets, Netzwerk usw....

Deswegen soll man in einer "EventLoop" auch folgenderweise vorgehen :

Code: Alles auswählen

Repeat
  Event = WaitWindowEvent() ; Wenn ein Event ausgelöst worden ist dann steht es nun in "Event"
  
  Select Event
    Case #PB_Event_CloseWindow ; War es das Event "Fenster wurde ausgeklickt" ?
      Break ; dann verlasse die Repeat Schleife
    Case #PB_Event_Gadget ; Wenn ein Gadget ein Event ausgelöst hat....
      Select EventGadget(); Wähle aus, welches Gadget war es ?
        Case #MyButton ; Es war mein Button. Der hat keine EventTypes also.... 
          MyFunktion() ; Dann führe meine Prozedur aus.
        Case #MyCanvas ; Es war mein Canvas das ein Event gesendet hat.
          Select EventType() ; Mein Canvas hat etliche Types, daher : Welcher EventType()
             Case #PB_EventType_MouseEnter ; Die maus ist in das Canvas gekommen
                ; mache dies
Du siehst : (Wait)WindowEvent() löst keine Ereignisse aus, sondern diverse Objekte, wie eben Gadgets oder Fenster.

Da viele der Events die ankommen, nicht offiziell dokumentiert sind, müssen sie aber trotzdem durchgeschleift werden.
Ansonsten würde der "MessageQueue" von Windows unterbrochen werden und dann ist dunkel im System.

Daher bekommst du viele Events die eigentlich nicht zugeordnet werden können (mit Tricks natürlich schon)
aber wie gesagt, nur dokumentierte Events und EventTypes haben auch ordnungsgemäße Werte da wo sie laut
Dokumentation auch sein sollen.

Wenn man eben nicht bei einem StringGadget abfragt welcher EventType gemeldet wurde, wird die Abfolge
Case #MyString : Debug "Hallo" bei jedem Event, das das StringGadget meldet, ausgeführt.
Egal ob geklickt, maus drüber oder sonstwas gemacht wurde!
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: Events und Gadgets

Beitrag von silbersurfer »

Hallo Bisonte,

Ich gebe Tanaghra da recht, mir erklärt sich das verhalten der If Abfrage auch nicht so richtig.
Bei dem start seines Programmes wird ja nur das Fenster sowie die Gadgets erstellt, und in der Repeat schleife
auf Event´s gewartet, warum also wird ein Gadgetevent ausgegeben obwohl die Maus auserhalb des Fensters liegt (beim Programstart), und auch sonst keine dinge
veranstaltet werden ?

Eigendlich dürfte beim Programmstart nicht in die Gadgetevent-Verzweigung gesprungen werden, die frage stellt sich wie PB das nun intern händelt, und einen
Gadgetevent sieht und diesen dann auf -1 verwertet.

Das passiert auch wenn man so vorgeht wie du es beschrieben hast (siehe code)

Code: Alles auswählen

EnableExplicit


Enumeration Gadget
  #Bz_TD
  #Bz_TE
  #Ef_TD
  #Ef_TE
  #Sf_Kl
EndEnumeration

LoadFont(1,"MS Sans Serif", 10)
SetGadgetFont(#PB_Default, FontID(1))

If OpenWindow(1, 0, 0, 330, 95, "Testfenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	TextGadget(#Bz_TD, 10, 10, 100, 20, "Testfeld Default:")
	TextGadget(#Bz_TE, 10, 35, 85, 20, "Testfeld Else:")
	ButtonGadget(#Sf_Kl, 112, 60, 85, 25, "Klick !")
	StringGadget(#Ef_TD, 112, 8, 205, 20, "Ereignis-ID")
	StringGadget(#Ef_TE, 112, 32, 205, 20, "")	
EndIf 

Repeat
	Define event =WaitWindowEvent()
		Select event 
  			Case #PB_Event_CloseWindow 
  				Define Exit=#True
  		
  			Case 	#PB_Event_Gadget	 	
  				Select  EventGadget()
  					Case 	#Sf_Kl
						SetGadgetText(#Sf_Kl, "Angeklickt!")
						SetGadgetText(#Ef_TE, "Ereignis-ID: "+Str(event)+", Gadget-Nr: "+Str(EventGadget()))
				Default
					SetGadgetText(#Ef_TD, "Ereignis-ID: "+Str(event)+", Def.Gad-Nr: "+Str(EventGadget()))	
				EndSelect
			
		Default
				SetGadgetText(#Ef_TE, "Ereignis-ID: "+Str(event)+", Gadget-Nr: "+Str(EventGadget()))	
		EndSelect	

		
Until Exit=#True

CloseWindow(1)
End
Edit:
@Bisonte
Da viele der Events die ankommen, nicht offiziell dokumentiert sind, müssen sie aber trotzdem durchgeschleift werden.
Ansonsten würde der "MessageQueue" von Windows unterbrochen werden und dann ist dunkel im System.
und warum wird das dann nicht in der Hilfe so auch Dokumentiert ?

gruß Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
Bisonte
Beiträge: 2429
Registriert: 01.04.2007 20:18

Re: Events und Gadgets

Beitrag von Bisonte »

silbersurfer hat geschrieben:Bei dem start seines Programmes wird ja nur das Fenster sowie die Gadgets erstellt, und in der Repeat schleife
auf Event´s gewartet, warum also wird ein Gadgetevent ausgegeben obwohl die Maus auserhalb des Fensters liegt (beim Programstart), und auch sonst keine dinge veranstaltet werden ?
Woher willst du das wissen ?
Woher weisst du, ob Windows nicht gerade meint, der Desktop bräuchte eine Auffrischung ?
Woher willst du wissen ob nicht gerade dein Gadget das du erstellt hast ein Repaint braucht ?

Ein Fenster wird erstellt, da fallen schon mal diverse Events an. Gadgets werden erstellt. Die Dinger müssen auch auf das Fenster, also werden Events ausgelöst. Windows kommuniziert fast ausschliesslich mit Events.

Aber vielleicht kann mir einer der vielen Foren-Gurus helfen bei der Erklärung ;)
Ich glaube ich dringe nicht durch, oder ich äussere mich unverständlich :mrgreen:

Ich glaube wir brauchen einen Grundkurs in Sachen Eventverarbeitung. Ich hab im Team auch ein paar, die sich damit
schwertun....
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: Events und Gadgets

Beitrag von silbersurfer »

@Bisnote
Aber vielleicht kann mir einer der vielen Foren-Gurus helfen bei der Erklärung ;)
Ich glaube ich dringe nicht durch, oder ich äussere mich unverständlich :mrgreen:
das hat keiner behauptet Bisnote, ich bin noch noob in bezug auf Purebasic, und gerade dann sind solche dinge die nicht in der Hilfe klar rüber kommen von bedeutung.
du weist, dass es viele Events gibt die Purbasic nicht unterstüsst (oder nicht benutzt) wir nicht
Daher bekommst du viele Events die eigentlich nicht zugeordnet werden können (mit Tricks natürlich schon)
, ein kleiner Text in der Hilfe von z.B "nicht zu verarbeitende Events werden mit -1 zurückgegeben" hätte schon einmal ein hinweis seinen können

laut Hilfe steht aber wie schon Tanaghra es sagte:

laut PB Hilfe
#PB_Event_Gadget : ein Gadget wurde gedrückt
nichts von Repaint im zusammenhang mit #PB_Event_Gadget
nichts von der Desktop bräuchte eine Auffrischung im zusamenhang mit #PB_Event_Gadget

denn laut PB-Hilfe hätte kein event stattfinden dürfen (das war damit gemeint)
nun sind wir wieder etwas schlauer

gruß Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
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: Events und Gadgets

Beitrag von ts-soft »

Ist doch ganz einfach: Wir Werten nur Events aus, die wir benötigen und die lt. Hilfe kommen sollten, in der richtigen Reihenfolge und an der richtigen Stelle. Alle anderen Events können wir ignorieren, weil die werden automatisch oder gar nicht verarbeitet, das regelt das OS.

Der Default-Zweig ist in diesem Falle einfach unnötig.

Damit ist alles gesagt und ich halte mich hier wieder raus :mrgreen:
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