Eventverarbeitung mit mehreren Fenstern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Little John

Eventverarbeitung mit mehreren Fenstern

Beitrag von Little John »

Hallo,

was ist in einem Programm mit mehreren Fenstern besser (und warum!):
Eine Event-Schleife fürs ganze Programm oder eine Event-Schleife pro Fenster (oder noch was anderes)?

Hängt das davon ab, ob ein Fenster modal ist?

Gruß, Little John
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

Was besser ist ist sicher Geschmacksfrage. Ich verwende bei mehreren Fenstern nur eine gemeinsame Eventschleife. Ist für mich einfacher und übersichtlicher zu handeln.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Das geht pro Thread.

Wenn dein Hauptthread mehrere Fenster verwaltet, ist eine Schleife besser. Du kannst ja jederzeit mit EventWindow() prüfen, zu welchem Fenster das Ereignis gehört. DU prüfst ja schließlich mit EventGadget() auch, zu welchem Gadget das Ereignis gehört und hast nicht für jedes Gadget eine eigene Art Schleife.

Da aber jeder Thread sein eigenes Fensterhandling hat, muss bzw. sollte jeder Thread für sich seine eigenen Fenster verwalten, deswegen mein Einleitungssatz "Das geht pro Thread". Das gilt auch, wenn mehrere Threads mehrere Fenster haben. Ereignisse threadübergreifend managen zu wollen, ist als ob du die Hausaufgaben deines Banknachbarn erledigst und er stets deine — da kann auch gleich jeder seine eigenen Aufgaben erledigen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Für jeden Thread, der Fenster erstellt wird eine Eventschleife benötigt.
Mehr Eventschleifen sind kontraproduktiv, da du entweder
- Events der anderen Fenster verschluckst
- alles doppelt und dreifach machen müsstest

Eine einzellne Eventschleife wäre höchstens für Requester oder
Messagefenster eine alternative, sofern diese die Programmausführen
komplet aufhalten dürfen/ sollen. In diesem Fall ist aber vorher jedes bis
dahin aktive Fenster zu deaktivieren oder zu verstecken.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Little John

Beitrag von Little John »

Alles klar, danke für die Antworten!

Gruß, Little John
Antworten