richtige Abfrage - falsche Abfrage
-
Hi!
Ich habe folgendes Problem: Es geht um einen Mousemove bei im Hauptfenster eines Programmes! In der Funktion ist folgende Abfrage:
void __fastcall TFrMain::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(X<=0||X>=FrMain->ClientWidth||Y<=0||Y>=FrMain->ClientHeight) { MBL = false; //MouseButtonLeft MBM = false; //MouseButtonMiddle MBR = false; //MouseButtonRight } ... .. . } //---------------------------------------------------------------------------
Die If-Anweiseung ist immer false, wenn sich die Mouse im Fenster bewegt, ist die Mouse jedoch ausserhalb des Fensters, wird die abfrage true. Jedoch nicht, wenn ich die rechte Mousetaste (oder die mittlere) gedrückt halte und dann aus dem Fenster 'fahre'. Mit der linken funzt das. Warum? Erkennt hier jemand vielleicht den Fehler?
Gruß
Blubbermann
-
ich hab jetzt eine Lösung, jedoch alles per "Hand".
/*Überprüfung der Mouseposition, ob sie im Fenster ist*/ GetCursorPos(&mouse); int right = FrMain->Left + FrMain->Width; //für die Rechte Seite int left = FrMain->Left; //für die linke Seite int top = FrMain->Top; //für die obere Seite int below = FrMain->Top + FrMain->Height; //für die untere Seite if(mouse.x<left || mouse.x>right || mouse.y<top || mouse.y>below) { MBL = false; MBM = false; MBR = false; }
Verstehe aber leider immer noch nicht, warum es (wie beim ersten Posting) nicht geklappt hat.