WxButton Event unterbrechen!?!



  • Hallo Leute,

    könntet ihr mir bei einem Problem mit wxWidget weiterhelfen?
    Ich überlege u. probiere schon seit Tagen herum.

    Ich habe ein Programm mit wx-devcpp geschrieben, welches bei Button-Betätigung ein Event startet. Dieses springt in ein WxButton1Click-Unterprogramm, welches ein langes Ereignis startet (Leiterplattenprüfung).

    Jetzt will ich diese Funktion z.B. abbrechen, aber ohne gleich das ganze Programm zu schließen. Aber es will nicht. Ich habe es schon mit einigen sachen versucht. Das Programm hängt da richtig fest und führt stur die Funktion weiter aus.

    Weiss jemand einen sicheren Weg? Ich habe etwas von Threads gelesen, aber ob das das Problem löst weiss ich nicht.

    Außerdem soll das Event noch bei anderen Buttons die Hintergrundfarbe verändern. Macht es auch. ABER erst wenn die Funktion beendet ist.
    Warum ist das denn so? Weiss das jemand?

    Ich danke schonmal für hilfreiche Antworten.

    Bye
    Martin



  • evtl. mit Event.Skip() ?



  • Aber wie setze ich das ein?

    Die Event Funktion:

    Pruef574B::WxButton1Click(wxCommandEvent& event){

    verfahr_und_mess(); // Dauert je nach Leiterplatte bis zu 5 min.
    }

    Wenn ich jetzt durch z.b. ein Key Event oder anderes on click event abbrechen will, geht das nicht. er fährt sein programm bis zum ende ab.



  • Dein Problem ist, dass du dir die Message-Queue blockierst, solange deine Funktion nicht zurückkehrt.

    Du kannst entweder deine Funktion in einen Thread auslagern oder innerhalb deiner Funktion regelmässig per wxYield() dafür sorgen, dass wartende Messages (= Events in wxWidgets) abgearbeitet werden.



  • Achso ja stimmt...danke...und den Thread kann ich dann einfach beenden?

    wxYield()? Ja da schau ich mal in die wxWidget documentations.

    Weiss jemand warum sich in der funktion zur laufzeit nicht der background von anderen buttons färben lässt, sondern nur nach der funktion? AppendText in ein editfeld während der funktion geht aber.


Anmelden zum Antworten