Mouse Bewegung Begrenzen



  • Hi,
    Ich hab noch ne Frage, und zwar würde ich gerne die Mousebwegung in einem Feld, z.B in einem Image Feld oder einem Panel eingrenzen, wenn die Linke Maustaste gedrückt ist.

    Mit andren Worten. Wenn ich Innerhalb dieses Feldes bin und die linke MauseTaste drücke darf der Zeiger das Feld nicht verlassen.

    Hat da jemand einen Tipp wie ich das realisieren kann?



  • Du könntest mit GetCursorPos die Position des Cursors ermitteln und für den Fall, dass er den Bereich verlässt, ihn mit SetCursorPos wieder in das Feld bringen.

    Gruss



  • Sieh mal nach unter ClipCursor

    😉



  • Also ich hab den ganzen kram jetzt mal durchgetestet. Das mit SetCursorPs und GetCursorPos ist keine schlechte idee gewesen. Aber meine tests haben ergeben das sich die Positionen auf den desktop beziehen und ich somit kein genaues Feld angeben kann.

    Also zur Zeit sieht das ganze bei mir so aus.

    void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    
    if(test2 && X<255 && Y<255 && X>0 && Y>0)
    {
    Edit1->Text=X;
    Edit2->Text=Y;
    Label42->Left=X;
    Label42->Top=Y;
    }
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Image1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    
    test2=true;
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    test2=false;
    }
    //---------------------------------------------------------------------------
    

    Also mir wird quasie mit Edit1 und Edit 2 die Mouse Position angezeigt und das Label42 kann ich innerhalb des feldes Verschieben.

    Das was noch hinzukommen soll, ist das die Maus das Feld (also Image) nicht verlassen darf, während ich die Maus gedrückt halte.

    Das was mir reichen reichen würde wenn ich X und Y wieder Werte zuweisen könnte. aber entweder geht das nicht oder ich hab es nicht hinbekommen.

    Hat jemand ne idee wie ich das machen könnte??



  • Hi

    Wenn ich mich recht erinnere müßte man doch mit SetCursoPos den Mauszeiger setzen können.
    Die Koordianaten können vom Bilschirm auf die Anwendung konvertiert werden.
    ScreenToClient und umgekehrt ClientToScreen.

    MfG Stephan


Anmelden zum Antworten