Problem mit Events und dem Menü
Übersicht

FruscianteBetreff: Problem mit Events und dem Menü |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, ich hab ein nerviges Problem mit den Events, speziell mit dem Menü eines Fensters. Zur Übersicht halber habe ich die Funktion WaitEvent in eine eigene Funktion ausgelagert und rufe in der Hauptschleife meine eigene Funktion jeden Schleifendurchlauf 1x auf. Hier erst mal ein bisschen Code wie meine WaitEvent Funktion aufgebaut ist:
Code: [AUSKLAPPEN] Function Eventhandle() Select WaitEvent(0) Case $205 ;MouseEnter Select EventSource() Case tilecanvas FlushMouse() tilechoice_bool = 1 Case maincanvas FlushMouse() tilechoice_bool = 0 End Select Case $401 ;Gadgetaction Select EventSource() Case slider1 SetGadgetShape tilecanvas,-SliderValue(slider1),0,GadgetWidth(tilecanvas),GadgetHeight(tilecanvas) End Select Case $803 ;WindowClose End Case $203 ;Movemouse Select EventSource() Case tilecanvas tilechoice_bool=1 Draw_Tilechoice() Case maincanvas tilechoice_bool=0 End Select Case $1001 ;MenuEvent UpdateWindowMenu main Select EventData() Case 9 Select MenuChecked(show_collision) Case 0 CheckMenu show_collision UpdateWindowMenu main collision_switch = 0 Case 1 UncheckMenu show_collision UpdateWindowMenu main collision_switch = 1 End Select Case 4 ;saveas ;...! Case 3 ;save ;...! Case 5 ;load ;...! End Select End Select End Function So, wo ich ein kommentar mit "...!" eingefügt hab, hab ich den original Quellcode rausgenommen damit der Codeschnipsel übersichtlich bleibt. Dort waren If abfragen drin falls das etwas mit meinem Problem zu tun haben könnte. Jetzt zu dem Problem: Die Menüpunkte reagieren teilweise erst beim 2ten mal klicken. Wenn ich Waitevent(0) benutze geht es etwas besser, also funktionieren sie auch häufiger beim ersten klicken. Aber gerade bei der Funktion speichern denke ich ist es wichtig das es ausnahmslos funktioniert. Besonders wenn man versuch einen Menüpunkt schnell anzuklicken passiert häufig gar nichts :/ . Das nächste Problem ist das ich wenn ich WaitEvent(0) (anstatt WaitEvent(1) oder ähnliches) benutze ich mehrmals auf das X zum schließen klicken muss. Dauert dann unterschiedlich lange bis es reagiert. Bei WaitEvent(1) funktionieren die Menüpunkte zwar wieder etwas unregelmäßiger dafür aber der X Button beim ersten mal. Bin für jede Hilfe dankbar. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das hört sich an als wenn du WaitEvent an mehreren stellen abfragst und es in dieser Function schon leer ist!
Wie sieht den der Aufruf zur Function Eventhandle() aus? |
||
[BB2D | BB3D | BB+]
|
Frusciante |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm, also mehrmals rufe ich WaitEvent() auf jedenfall nicht auf, die Funktion Eventhandle() wird immer am Ende der Mainloop ausgeführt | ||
![]() |
Shogo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann so keinen Fehler sehen.
Eine Vermutung auch wenn es sehr unwahrscheinlich ist, ist das du pro Schleifendurchlauf mehrmals Code: [AUSKLAPPEN] UpdateWindowMenu main benutzt.
|
||
Frusciante |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich führe jeden schleifendurchlauf einmal UpdateWindowMenu main aus. Du meinst jetzt ob ich die Funktion jeden schleifendurchlauf 2 oder mehrmals abrufe, oder?
Mal eine andere Frage: Funktionieren bei euch die Menüs einwandfrei, ohne jegliche Aussetzer? Und hat die Aktivität der Fenster mit der Funktionalität der Menüs etwas zu tun? Also wenn zum beispiele das Aktive Gadget ein Canvas ist und nicht das Fenster an sich? |
||
![]() |
Shogo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, ich meine das du bei
Code: [AUSKLAPPEN] Case $1001 ;MenuEvent
UpdateWindowMenu main ein Menu update machst und dann hier noch mal: Code: [AUSKLAPPEN] Select MenuChecked(show_collision)
Case 0 CheckMenu show_collision UpdateWindowMenu main collision_switch = 0 Case 1 UncheckMenu show_collision UpdateWindowMenu main collision_switch = 1 End Select nimm es mal bei case$1001 raus. Das es wirklich nur einmal pro Schleifendurchlauf benutzt wird wenn sich auch wirklich was aendert. Vielleicht hilft es. Zu deiner Frage, bei mir haben die Menues immer funktioniert. |
||
Frusciante |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wow, das war tatsächlich das Problem. Menüs + X funktionieren jetzt einwandfrei.
Danke |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group