www.mikrocontroller.net

Forum: PC-Programmierung wxWidgets Fenster refreshen / friert ein


Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>- 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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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();

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hat funktioniert. Verschieben funktioniert...

mfg Andreas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.