[wxWidgets / evtl verschieben] pause funktion ?
-
Hallo
Ein zusätzlicher Thread reicht. Wenn das Schema ist "tue aller x Sekunden etwas" dann reicht auch ein wxTimer.
bis bald
akari
-
Würde dir auch zu wxTimer raten. Damit kannst du eine Funktion alle x Sekunden aufrufen.
-
nur leider habe ich keine ahnung wie ich soetwas machen kann...
kann mir da jemand auf die sprüung helfen?mfg
-
-
ja aber ich glaub in meinem Fall kann ich keine wxTimer verwenden...
vector<double>* Communicate::insertion(Communicate *comm) { wxClientDC dc(m_rp); //Context zur grafischen Ausgabe vector<double>::iterator k,i,end,begin; double v; //einzufuegendes Element int anz = 1; begin = pFeld->begin(); end = pFeld->end(); // $end auf das Ende von $pFeld setzen for(k = pFeld->begin(); k != end; k++) // Elemente der Reihe nach auswaehlen { v = *k; // $v auf aktuelles ($k-tes) Element setzen i = k; m_lp->DrawVector(10,10,dc,pFeld); //Ausgabe des aktuellen Inhalts des vectors $pFeld // ----- die $k-ten Elemente einfuegen ------------ while( i > begin && v < *(i-1) ) // Elemente nach rechts verschieben { *i = *(i-1); i--; m_lp->DrawVector(10,10,dc,pFeld); //Ausgabe des aktuellen Inhalts des vectors $pFeld } *i = v; //$k-tes Element an einfuegen anz++; } m_lp->DrawVector(10,10,dc,pFeld); //Ausgabe des aktuellen Inhalts des vectors $pFeld return pFeld; }
also mit DrawVector wird der aktuelle Inhalt des Vectors pFeld ausgegeben und in DrawVector wird das Programm für 1 s angehalten um die Werte betrachten zu können.....
Aber wenn ich DrawVector per wxTimer nur jede Sekunde aufrufe wird ja währenddessen weitersortiert oder? und dann kann man den Sortierverlauf nicht mehr nachvollziehn (und das sollte der Sinn des Programms sein ;-))
oder sehe ich das falsch, dass hier nur ein zusätzlicher Thread hilft?
-
Hm, wieso nimmst du für das Zeichnen nicht einfach eine OnPaint methode?
Dann könntest du einen Timer entsprechend setzten, der dann die Sortierung schrittweise vornimmt, und danach Refresh() aufruft, was die OnPaint auslöst.
Sortierung und Ausgabe solltest du trennen, das ist einfach sauberer.
-
hm ja meinst du ich sollte DrawVector nicht im Sortierverfahren aufrufen?
Ich denke ich weis was du meinst aber ich habe keine Ahnung wie ich das Sortierverfahren so zerstückeln soll, dass es immer nur einen Schritt sortiert und dann zurück springt.....aber am Wochenende werde ich mir sowieso wieder ein wxwidgets Buch zu Gemüte führen^^
-
Du müsstest das Sortierverfahren halt so aufsplitten, das du bei jedem Funktions/Timeraufruf um eins weiter sortiert.
Oder du sortierst in einem Thread, und schickst den Zustand dann jeweils mit einem Event an das Hauptfenster, bevor du für den Thread sleep aufrufst.
-
jup das mit dem Thread haut hin aber noch eine Frage zu DrawLine, die Paramter x und y werden ja vom linken oberen Punkt des Fensters aus gezählt, gibts eine einfache Möglichkeit, dass ich den linken unteren Punkt als Bezugspunkt wähle oder muss ich da umständlich die aktuelle Größe des Fenster herausfinden....?
-
Hm, müsste diese Funktion machen:
http://wxwidgets.org/manuals/stable/wx_wxdc.html#wxdcsetaxisorientation