Problem mit Events Mousedown in Kombi. mit KeyRepeat

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Bob

Betreff: Problem mit Events Mousedown in Kombi. mit KeyRepeat

BeitragDo, Dez 07, 2006 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Tach zusammen,

ich versuche mich grade an einem OOP Tileeditor mit MAXGUI.
Ich habe dieverse Types erstellt in deren Feldern zum Teil GadGets abgelegt werden.
In den Typen implementiere ich ein Hook Funktion zur Auswertung
der entsprechenden Events.

Da Ich festgestellt hbe das dass Event EVENT_MOUSEDOWN
nur einmal beim Mausdown ausgelöst wird, habe ich in die entsprechenden Typen weiterhin ein Feld in dem gespeichert wird ob die Taste noch gedrückt wird.
Soweit kalppt alles ganz gut.
Jetzt ist es weiterhin so das ich nicht nur auf Mousedown prüfen möchte sondern auch ob zusätzlich die Tasten SHIFT, ALT oder CONTROL gedrückt werden.
Dazu habe ich herausgefunden das diese im MOD Feld des Types Event abgefragt werden können.

Jetzt das eigentliche Problem.

Wenn ich die ALT Taste gedrückt halte und die Maustaste ist auch gedrückt weis ich dies zwar aber meine Methode die dann angewand werden soll greift Teilweise ins Leere weil zusätzlich die ganze Zeit über auch noch das EVENT KEYREPEAT ausgelöst wird und dann die Felder X, Y des Current Event's 0,0 sind.
Sprich dase Keyrepeat klaut mir die Mauskoordinaten.

Sorry wenn ich das so umfangreich schildere aber ich bin in MaxGui und dem Event System noch ein totaler Anfänger.
Damit man nachvoll ziehen kann was gemeint ist hier ein Testcode.







Code: [AUSKLAPPEN]
Strict

'Maustaste Druecken
'Maustaste festahlten
'Maus Bewegen
'zusaetzlich SHIFT , ALT oder CTRL druecken

Local win:TGadget = CreateWindow("Mausdown",40,40,320,240)
Local pan:TGadget = CreatePanel(0,0,ClientWidth(win),ClientHeight(win),win,PANEL_ACTIVE)
local lab:TGadget = CreateLabel("Mouse X Y",10,10,150,20,Pan,LABEL_SUNKENFRAME)
SetGadgetLayout pan,1,1,1,1

Local MD:Int

While True
   WaitEvent
   
   Select EventID()
      Case EVENT_MOUSEDOWN
         MD = True
      Case EVENT_MOUSEUP
         MD = FAlse
      
      Case EVENT_WINDOWCLOSE
         End
   End Select
   
   IF md THEN
      SetGadgetText(Lab, CurrentEvent.x+ " " +CurrentEvent.y)
   endif
      
   Print CurrentEvent.ToString()
Wend


Wie also bekomme ich bei gedrückter, gehaltener Maustaste+ gedrücktem gehaltenem Modifikator Korrekte X,Y Koordinaten?

Danke für eure Bemühungen.
 

Dreamora

BeitragDo, Dez 07, 2006 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittels EVENT_MOUSEMOVE

Mousedown etc sind nicht für die Position konzipiert.

Einfach globale MX, MY speicher die in mousemove aktualisiert werden und alle probleme sind gelöst Smile (naja die meisten)

PS: Bei alt ist das problem nix mit keyrepeat sondern alt aktiviert das menü, deswegen tickt es aus. kein alt keine probs
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Bob

BeitragDo, Dez 07, 2006 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Dreamora,

Klappt gut.Danke.
Viele Probleme nun vom Hals. Da war ich schon so weit das MouseDown zu speichern aber auf den Trick die Koordinaten auch aufzunehmen bin ich nicht gekommen.
Haztte mittlerweile ne riesen IF..AND.. OR.. Bedingung gebastelt um alles möglich auszuschliessen.

Ich Hacke immer alle Bäume ab wenn sie mir den Blick auf den Wald versperren Wink

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group