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.


Anmelden zum Antworten