Erkennen ob ein Button gedrückt ist



  • Hallo alle zusammen,

    ich arbeite zum ersten mal mit C++/CLI und bräuchte aktuell eine Funktionalität, welche eine Anweisung ausführt solange ein Button gedrückt ist.

    Ich habe schon gegoogelt und bin auf die MouseEvents mit einem Timer oder Thread gestoßen. Ich habe es auch schon probiert umzusetzen, leider hängt das Programm in einer Endlosschleife wenn ich die Maus loslasse.

    Der Code zum Eventhandler:

    this->button18->MouseUp += gcnew System::Windows::Forms::MouseEventHandler(this, &Demo::button18_MouseUp);
    this->button18->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Demo::button18_MouseDown);
    

    Der Code zu den Events:

    private: System::Void button18_MouseUp(System::Object^ sender, MouseEventArgs^ e)
    {
        stop = true;
        button18_Thread->Join();
    
    }//end of button18_MouseUp
    
    private: System::Void button18_MouseDown(System::Object^ sender, MouseEventArgs^ e)
    {
        stop = false;
        button18_Thread = gcnew Thread(my_move_Thread);
        button18_Thread->Start();
    }//end of button18_MouseDown
    

    Der Code zu dem Thread und der move Methode:

    ThreadStart^ my_move_Thread = gcnew ThreadStart(this, &Demo::move);
    Thread^ button18_Thread;
    
    void move()
    {
        while (!stop)
        {
            label17->Text = Convert::ToString(--act_vel);
        }//end of while
    
    }//end of move
    

    Ich hoffe ihr könnt mir weiterhelfen 🙂



  • Habe es jetzt anders gelöst.
    Die boolean stop ist weg und anstatt join nutze ich abort.



  • Fetzi schrieb:

    ....

    ich arbeite zum ersten mal mit C++/CLI ....

    Und das solltest du lieber ganz schnell mal lassen, wenn du nicht grade InterOp machen willst:

    https://www.c-plusplus.net/forum/263084


Log in to reply