Seite 1 von 1

Abfragen von Events

Verfasst: 31.10.2005 13:09
von astuerber
Guten Tag,

mein PureBasic-Weltbild ist noch nicht abgerundet,
dazu habe ich eine Grundsatzfrage, aber ich muss ein wenig ausholen.

Beim Programmieren von z.b 8085 oder AVM-Microkontroller (assembler)
muss man die Abfragen selbst in die Hand nehmen, zeitgesteuert, z.B. alle par (10...20 msec) die Peripherie auf Änderungen abfragen, mit unterprogramm abarbeiten , nächste Peripherie abfragen usw...

Wenn ich z.B

Code: Alles auswählen

If EventGadgetID()=2   ; Variante 2
 DisableGadget(1,1)       ; disablet Variante 1
 DisableGadget(3,1)       ; disablet Start v. variante 1
 DisableGadget(4,1)       ; disablet Stop v. variante 1
EndIf
habe,
macht Windows das ganze unabhängig vom zeitlichen Ablauf meines programmes ??
Oder muss ich diese Abfrage auch wie oben einleiten ?

wie ist da der Ablauf bei dieser höheren Sprache wie PureBasic im engsten zusammenspiel nit Windows??

Mit der Bitte un Aufklärung...
Astuerber

Verfasst: 31.10.2005 13:44
von Andre
Sieh Dir in der Hilfe mal die Beschreibung zu WaitWindowEvent() an.
Mit diesem Befehl lässt Du Dein Programm auf ein Ereignis warten, anschließend kannst Du dann die Art des Ereignisses abfragen und entsprechend darauf reagieren. :wink:

Verfasst: 31.10.2005 14:06
von ts-soft
>> macht Windows das ganze unabhängig vom zeitlichen Ablauf meines programmes ??
Grobe Erklärung, nur zum Verständnis:
Beim erstellen eines Fenster, erhält windows die Adresse einer Procedure, wohin es die Nachrichten weiterleiten kann. Diese Nachrichten durchlaufen oftmals mehrere weiterer solcher Proceduren im Programm.
Die Nachrichtenschleife, die Du mit WaitWindowEvent() einrichtest, wird von PureBasic bestückt, aber nur mit den wichtigsten Nachrichten.
Als weitere alternative kann man sogenannte Callbacks einrichten, diese erhalten dann so gut wie alle Nachrichten.
Was am Schluß dieses ganzen Ablaufs übrig bleibt, versucht Windows dann selber zu erledigen (z.B. Neuzeichnen des Fenster)
Ich hoffe, das kann man so verstehen und das es halbwegs richtig ist :wink:

Wenn Dein Programm sehr lange für etwas braucht, wirste sehen das auch das auch Dein Fenster nicht mehr aktualisiert wird. Dem kann man aber abhelfen, siehe einfach in die Hilfe.

Verfasst: 01.11.2005 01:23
von astuerber
danke, Andre

"Wartet bis ein Ereignis auftritt. Es ist die selbe Funktion wie WindowEvent(), hält aber die Programmausführung an,..."

Und wenn das Ereignis NICHT eintritt ????, es ist ja schliesslich ein "IF"

Eine andree Alternative wäre (wenn er einfach eine "Ablage" hinterlegt, wie es ts-soft suggeriert),

alle möglichen Gadgets am Anfang des Programms zu definieren, mit der Festlegung eine variable zu definieren (1 oder 0) und Else "continue" (wenn es sowas gibt), hinterher kann man die Variablen ,jenachdem ob 1 oder 0, bearbeiten.
Meine Frage isat, ob er das ständig durchlaüft, wenn ich vermeide, dass das Programm das "End" unbeabsichtiigt findet.

Besser gefragt: wenn es gerade was anderes tut, "guckt" Pb-WIn ständig im Hintergrund ob ein Erereignis eintritt, oder erst dann wenn es wieder durch die eine Stelle durchläuft ???"

Danke auch an ts-soft

Verfasst: 01.11.2005 01:36
von astuerber
Nachtrag :

Habe eben einen weiteren Wink von der Hilfe bekommen:

Event = WindowEvent()
Beschreibung

Überprüft, ob in irgendeinem der geöffneten Fenster ein Ereignis stattfand. Diese Funktion kehrt umgehend zum Programmablauf zurück

Suchen muss man können....
Astuerber