Ausgabefeld verschwindet



  • Hallo,
    meine Oberfläche wurde unter VisualStudios 2008 mit MFC gestaltet.

    Ich habe ein Feld für Ausgaben während einer Rechnung, die anzeigen was gerade gemacht wird.

    Da ich nichts schönes gefunden habe, hab ich nun ein Edit-Control, bei der man keine Eingaben machen kann (wenn ich keinen Scroll-Balken für die Vertikale hinbekomme, werd ich mich noch nach einer Alternative umsehen) - aber um das geht es hier nicht.

    Damit während der Rechnung die Anzeige aktuallisiert wird, mache ich ein
    this->RedrawWindow(); in der Klasse des Frames (abgeleitet von public CDialog - wurde automatisch von MFC erstellt).

    Funktionierte super bis jetzt.

    Grad habe ich noch 3 Radio-Buttons aingefügt und kurz bevor die Rechnung startet, wird ein UpdateData(TRUE); ausgeführt.

    Sonst ist alles wie vorher. Jetzt geht die Ausgabe nicht mehr. Wenn die Berechnung losgeht, verschwindet der komplette Edit Control und erscheint mit der Ausgabe ganz am Ende, wenn alles beendet ist.

    Vielleicht gibt es ja eine geeignetere Methode wie RedrawWindow() um es aktuell zu halten!?
    Oder sonst eine bessere Idee?

    Danke



  • ich geh mal davon aus das du deine berechnungen in einem handler eines Buttons machst. da beine berechnung länger ist und du keine rechenleistung frei gibst und keine Messages in deinem Dialog mehr verarbeitet werden, wird auch dein Dialog nicht mehr aktualisiert.

    jetzt gibt es 2 möglichkeiten:
    1. Berechnung in einen Thread auslagern und den Status über eine Usermessage an deinen Dialog senden
    2. wärend der Berechnung also nach der ausgabe von einem neuen status, den Messageloop durchlaufen lassen und deine Nachrichten zu verarbeiten denn alle zeichenaktionen die ausgeführt werden sollen gehen über messages, dazu schaust du hier

    das würde ich jetzt mal so sagen anhzand deiner ausführungen


  • Mod

    Evtl. langt es UpdateWindow aufzurufen...


Anmelden zum Antworten