Dialog aktualisieren



  • Moin, moin...

    Folgende Problematik: In einem Dialog wird eine längere Berechnung mit Hilfe eines Aufrufs einer Funktion aus einer externen Klasse durchgeführt. Dieser Funktion übergebe ich einen CProgressCtrl um den Fortschritt der Berechnung in einem Fortschrittsbalken anzuzeigen. Berechnung läuft und funktioniert auch - alles wunderbar... Wenn ich aber nun während der Berechnung (also während der Anzeige des ProgressBar) das Fenster wechsle oder sonstwie was klicke o.ä. dann bleibt der Balken stehen, das Programm scheint abgestürtzt. Die Berechnung läuft jedoch weiter bis zum Schluss - dann aktualisiert sich das Fenster wieder: ProgressBar auf 100% und alles wieder in Butter.

    Die Lösung wird irgendwo in der OnPaint liegen, soviel ist klar, aber wie kann ich ein OnPaint aus einer externen Klasse erzwingen, die grundsätzlich nix mit dem Dialog zu tun hat?!

    Gruß,
    Holger



  • während der schleife kriegt die message loop keine rechenzeit ab. bau' deshalb in die schleife sowas in der art ein:

    MSG msg;
    while (::PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) 
       AfxGetApp()->PumpMessage();
    


  • Spitze, danke für den Wegweiser!

    Mit

    MSG mess;
    if (::PeekMessage(&mess,NULL,0,0,PM_REMOVE)) 
    { 
        ::TranslateMessage(&mess); 
        ::DispatchMessage(&mess); 
    }
    

    funktioniert´s prächtig!

    Gruß,
    Holger


Anmelden zum Antworten