Abfrage Maus in oberer Fensterleiste ?



  • Hallo,
    ich habe folgendes Problem. Ich möchte ein Contextmenu anzeigen, wenn die Maus den Clientbereich verlässt und in die obere Fensterleiste eintritt. Ich habe das bisher so gelöst:

    private: System::Void Form1_MouseMove(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
    	if(e->Y<=0)  
    	   contextMenuStrip1->Show(this,e->X,1);
    

    Das funktioniert aber nur, wenn ich die Maus sehr langsam bewege. Bei schnellen Bewegungen hilft die Abfrage nicht und das Contextmenu erscheint nicht.

    Vielleicht kennt jemand da eine bessere Lösung 😕



  • OK, Thema hat sich erledigt. Mir ist selber noch was eingefallen.

    private: System::Void timer2_Tick(System::Object^  sender, System::EventArgs^  e) {
       Point mp,mpt;
       mp=System::Windows::Forms::Cursor::Position::get();
       mpt=this->PointToClient(mp);   
       if(mpt.Y<=0 && mpt.X>0 && mpt.X<this->Width)  //Bereich abfragen
          contextMenuStrip1->Show(this,mpt.X,0);
    }
    

    Mal wieder im guten alten Timer laufen lassen!
    Ist zwar auch nicht die eleganteste Lösung, aber ich erhalte wenigsten negative Werte, wenn ich den Clientbereich verlasse.


Anmelden zum Antworten