Ich habe jetzt mit wxWidgets angefangen. Ich lese eine Diskette ein und erstelle ein Image. Dazu wird in einer Statusbar angezeigt wie weit das es schon ist. wird jedoch das Fenster verschoben, oder minimiert und wiederhergestellt ist das Fenster weiss. Windows meint "keine Rückmeldung", Bis die Diskette eingelesen ist, dann funktionierts wieder. Ich habe jetzt noch dort wo der Status geändert wird ein this->Refresh(); eingefügt, mit dem Ergebnis das das Fenster von selbst weiss wird (ohne verschieben oder so). Wie kann ich das verhindern? Kann ich etwas aufrufen das das ganze neu aufbaut oder muss ich da Threads machen (das würde ich lieber noch lassen...)? mfg Andreas
Ich vermute, du blockierst da ganze Programm beim Auslesen auf irgendeine Weise. Damit blockierst du auch die gesamte Eventverarbeitung und damit das Neuzeichnen beim maximieren usw. Es gibt mehrere Möglichkeiten, dass ganze zu umgehen: - Du verlagerst das ganze Einlesen in einen Thread (am saubersten) - Du verlegst das Einlesen in den OnIdle-Handler - Du rufst nicht nur refresh regelmäßig auf sondern auch wxApp::Yield. Das veranlasst das Ausführen aufgelaufener Events
>- Du rufst nicht nur refresh regelmäßig auf sondern auch wxApp::Yield.
Wie? Ich habe keine Instanz, wenn ich das richtig sehe wird das ganze
mit IMPLEMENT_APP(Project2FrmApp) gestartet... Wobei diese Klasse von
wxApp Yield geerbt hat... Ich habe schon gesucht aber Google findet
nicht das Yield das ich suche....
mfg Andreas
Du hast überall im Programm Zugriff auf die globale Variable wxTheApp. Ist vom Typ wxApp und enthält deine von wxApp abgeleitete Klasse. Aufruf also mit wxTheApp->Yield();
Danke, hat funktioniert. Verschieben funktioniert... mfg Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.