ProgressBar Dialog
-
Sonst such mal in deinem Projekt nach CWaitCursor.
Das erzeugt eine Sanduhr.
-
Nein das ist keine Einstellung von mir.
Ich weiß nicht ob ich vielleicht auch ein Verständnisproblem habe, ich schaffe es aber einfach nicht das Fenster anzeigen zu lassen, so dass ich es für weitere operationen benutzen kann.
-
Ich verstehe das so, dass du irgendwas in Gang setzt, wofür du eine Progressbar zur Status-Visualisierung benutzt.
Solange der Vorgang aber noch andauert, kannst du nichts mit deiner Anwendung anfangen, da er ja beschäftigt ist.
Meiner Meinung nach solltest du diesen Vorgang in einen extra Thread verlagern und du kannst weiterhin mit deiner Anwendung interagieren.
-
Naja, das hauptproblem ist erstma das ich mit dem Dialogfenster nichts anfangen kann...
Nehmen wir an ich möchte den aktuellen Prozess abbrechen. Das klappt schonmal nicht weil ich nicht die möglichkeit habe auf Abbrechen zu drücken (weil ich diese Windows-Sanduhr als cursor habe)
-
Wo liegt denn der Abbrechen - Knopf?
Auf dem Dialog? Oder befindet sich die Progressbar auf einem seperaten Dialog?
-
Das ganze ist ein einzelner Dialog, also der Progressbar und der Abbrechen Button ist auf einem Dialog
-
Dann würde ich das an deiner Stelle nochmal mit nem Thread ausprobieren. Sollte wirklich klappen.
-
ICh habe es jetzt mal mit einer Classe vom CodeProject versucht:
ProgressWndLeider habe ich auch da wieder probleme.
Das Fenster wird gezeigt wie gehabt. Der große und nicht so schöne Unterschied ist, wenn ich nun mit der Maus über das Fenster gehe schmiert es ab.Im Debugger komme ich auf die Zeile: AfxGetApp()->PumpMessage()
Ich benutze den ganzen Kram in einer DLL, daher kann ich nicht ohne weiteres AfxGetApp() benutzen. Leider fehlt mir ne idee wie ich das alternativ mit einer PeekAndPump methode umsetzen könnte. Hat da vielleicht jemand nen Hinweis für mich?
-
::AfxGetThread()->PumpMessage();
sollte gehen.
Gruß
-
Wenn ich
::AfxGetThread()->PumpMessage();
mache komme ich genau bis zum Methodenaufruf PumpMessage() dann bekomme ich wieder eine unbehandelte Ausnahme...
Ich habe keine Ahnung woran das liegen könnte...