Abfangen, wenn die Maus in gedrücktem Zustand den Button verlässt...
-
Hallo ihr,
ich habe da eine Frage, mit der ich nicht so recht weiterkomme und
bräuchte ein wenig Hilfe...Ich möchte gerne in Erfahrung bringen´und eine Aktion ausführen
lassen, solange auf einem PDA ein bestimmter Button nicht mehr
gedrückt wird (das klappt auch schon), oder wenn der Eingabestift
(die Maus) die Fläche des Buttons verlässt. (Hier haperts noch...)Durch die.rc-Datei weiss ich, wo meine Buttons liegen:
CONTROL "",IDC_BT_LEFT,"Button",BS_OWNERDRAW | BS_NOTIFY | WS_TABSTOP,54,151,45,20
CONTROL "",IDC_BT_RIGHT,"Button",BS_OWNERDRAW | BS_NOTIFY | WS_TABSTOP,108,151,45,20_____________________________________________________________________________
Das verziehen der Maus fange ich über das Ereignis OnMouseMove ab.
.
.
.
....::OnMouseMove(UINT nFlags, CPoint point)
{
BOOL x_fault = FALSE;
BOOL y_fault = FALSE;if (point.x < 54) {x_fault = TRUE;}
else if ((point.x >= 54) && (point.x <= 99)) {x_fault = FALSE;}
else if ((point.x > 99) && (point.x < 108)) {x_fault = TRUE;}
else if ((point.x >= 108) && (point.x <= 153)) {x_fault = FALSE;}
else if (point.x > 153) {x_fault = TRUE;}if (point.y < 151) {y_fault = TRUE;}
else if ((point.y >= 151) && (point.y <= 171)) {y_fault = FALSE;}
else if (point.y > 171) {y_fault = TRUE;}if (x_fault || y_fault)
{((Hier kommt dann der Teil, der gemacht werden soll, der
funktionier auch schon))}
}_____________________________________________________________________________
Aber irgendwie will das noch nicht so recht klappen.
Dachte mir über das Setzen der beiden BOOL-Variablen und nachherige Abfragen
könnte ich genau sehen, wann die Maus den spezifizierten Bereich verlässt.
Aber leider wird die Aktion auch schon ausgeführt, wenn die Maus no auf dem
Button verzogen wird.Irgendwie komme ich leider nicht auf die Lösung.
Vielen Dank schon einmal und schöne Grüße
-
Probier mal den Dreisatz:
GetWindowRect, ClientToScreen, PtInRectangle
hth
-
Dieser Test ist doch quatschl. Du bekommst doch die Koordinaten der Mausbewegung in Client Koordinaten!
-
Es gibt doch WM_MOUSELEAFE

Stichwort: TrackMouseEvent.
-
Hallo Siggi,
habe nun mal mit den genannten Funktionen herumexperimentiert,
klang schon sehr vielversprechend, aber auch das verschafft mir
leider nicht mein gewünschtes Resultat.Hallo Martin,
auch deine Denkanstösse habe ich mal versucht, in die Tat umzusetzen.
Habe dann versucht, zu sehen was passiert, wenn ich mit Coordinaten
in der Client-Area arbeite und dann auch das ganze mit den Ideen von
Sigi kombiniert, aber leider auch negativ.Hat einer von Euch, oder sonst noch jemand, der zufällig über diesen
Post stolpert, einen konkreten Vorschlag, wie ich es schaffen kann,
zu erkennen, wann auf einem PDA der Eingabestift von der Fläche eines
Button rutscht? Also solange der Stift auf den Button drückt, soll was
getan werden, rutscht der Stift runter, dann nicht mehr. Wenn man den
Stift auf dem Button wieder hochnimmt, klappt schon alles super.Danke schonmal für die bisherigen und alle kommenden Antworten.
Schöne Grüße von Allen