Im Dialog Mauszeiger orten und Click auswerten
-
Hallo
Ich habe einen Dialog in dem gazflächig ein eigenes Bild angezeigt wird. Kann man irgendwie festellen, wenn im Dialog ein Mausclick gemacht wird, wo genau im Dialog es war? So das man zwischen verschiedene Positionen des Mauszeiger beim Click unterscheiden kann? So möchte ich verschiedene Events auslösen, je nach dem wo man in Dialogfenster clickt.
Gruss
Frank
-
Bei einem Mausklick bekommst du eine WM_xBUTTONDOWN und WM_xBUTTONUP (x aus {L,R,M} gibt die Maustaste an, die gedrückt wurde) Nachricht, die als Paramaeter (auch) die Koordinaten mitgeben, wo geklickt wurde. Außer der Reihe kannst du die aktuelle Position auch per GetCursorPos() abfragen.
-
Hallo
Danke für die schnelle Antwort. Hast Du für die Abfrage ein Codeschnipsel? Muss Ich noch was einbinden in mein Projekt? Bin noch nicht lange am programmieren mit VC++.
Gruss
Frank
-
Du kannst dir vom Klassenassistenten die Behandlung der benötigten Nachrichten einbauen lassen, indem du die Handler-Funktionen anlegen lässt (eigentlich reicht es aus, eine der beiden Nachrichten abzufragen, da sie (fast) immer paarweise auftreten).
-
Entschuldigung wenn ich noch mal blödnachfrage, aber ich habe jetzt ein einfaches Dialogprogramm erstellt und wollte diesem Dialog nun mit hilfe des Klassenass. die WM_getcursor zufügen. Aber die gibts da nicht bei den Nachrichten??? Nur WM_setcursor habe ich gefunden?
Frank
-
GetCursorPos() ist ja auch keine Windows-Nachricht, auf die du reagieren könntest. Das ist eine Funktion, die du irgendwo aufrufen kannst, um die aktuelle Maus-Position zu ermitteln:
BOOL OnIdle(LONG ct) { if(ct%100==0) { POINT pos; GetCursorPos(&pos); TRACE("Pos: %d/%d\n",pos.x,pos.y); } }
Die Nachrichten, auf die du reagieren müsstest, wären WM_LBUTTONDOWN und WM_LBUTTONUP.
-
Achso GetCursor ist eine Funktion. Was bewirkt diese Zeile TRACE("Pos: %d/%d\n",pos.x,pos.y);? Muss mir diese Funktion die Position in pos. und pos.y zurück geben?
Frank
-
Das war jetzt nur ein Beispiel, wie du die Cursor-Position weiterverarbeiten könntest - TRACE() gibt den angegebenen Text ins VC Debug-Fenster aus (die Argumente sind wie bei printf().