Tapeman Geschrieben 1. März 2004 Teilen Geschrieben 1. März 2004 Hallo, ich wollte ein Editfeld in einer Schleife füllen, jedoch wird nichts angezeigt. Erst wenn ich bspw. eine MessageBox in die Schleife einfüge, aktualisiert er das Editfeld. Gruß Tapeman. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 1. März 2004 Teilen Geschrieben 1. März 2004 kannst du bitte ein wenig code liefern Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tapeman Geschrieben 1. März 2004 Autor Teilen Geschrieben 1. März 2004 void MeineKlasse::OnOK() { char aa[10]; sprintf(aa,"%i %i %i",mprz1.IsWindowEnabled(),mprz1.IsWindowVisible(),1==1); int i; char A[100]; for(i=0;i<101;i++) { sprintf(A,"%i%%",i); mprz=A; UpdateData(false); Sleep(10); // Wenn ich hier MessageBox(...) machen würde dann wird es mprz aktualisiert. }; CDialog::OnOK(); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 1. März 2004 Teilen Geschrieben 1. März 2004 du wolltes doch ein Editfeld in einer Schleife füllen, oder ?? diesen cod sieht nicht danach aus. Was verstehst du eigentlich über "Editfeld" ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tapeman Geschrieben 1. März 2004 Autor Teilen Geschrieben 1. März 2004 Unter Editfeld verstehe ich eigentlich das/ein Eingabefeld. Ist doch eigentlich in der Schleife drinne. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 1. März 2004 Teilen Geschrieben 1. März 2004 Original geschrieben von Tapeman Unter Editfeld verstehe ich eigentlich das/ein Eingabefeld. Ist doch eigentlich in der Schleife drinne. willst du im Eingabefeld das "100%" steht oder 0% 1% 2% .... 100% Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 1. März 2004 Teilen Geschrieben 1. März 2004 Original geschrieben von Tapeman Unter Editfeld verstehe ich eigentlich das/ein Eingabefeld. Ist doch eigentlich in der Schleife drinne. Ja von daher sollten keine Probleme kommen. Wenn es funktioniert sobald du die MessageBox reinmachst, liegt es wohl daran das der Inhalt der Editbox nicht aktualisiert wird. Aber das hast du ja anscheinend schon selber erkannt (wegen UpdateData...). Was ist denn mprz? Ist das eine Instanz einer Klasse für das editfeld? Wenn ja dann versuch mal mprz.UpdateData() aufzurufen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 1. März 2004 Teilen Geschrieben 1. März 2004 mprz ist anscheinend eine CString-Membervariable, die mit dem Eingabefeld verknüpft ist. Das Problem ist hier nicht, dass mprz oder die Information im Eingabefeld nicht aktualisiert wird, sondern dass zwischen den Aktualisierungen das Fenster nicht neu gezeichnet wird. Das liegt daran, dass OnOK letztendlich aus derselben Nachrichtenschleife heraus aufgerufen wird, die auch für die Bearbeitung der "Neu Zeichnen"-Nachricht verantwortlich ist. Dadurch wird erst neu gezeichnet, wenn OnOK zurückkehrt. Da ist aber die Schleife schon durchgelaufen und der Dialog geschlossen. Es gibt Wege, ein Neuzeichnen unter Umgehung der Nachrichtenschleife zu erzwingen, allerdings sehe ich hier den Sinn nicht. Was soll es bringen, ein Eingabefeld im Dialog von 0 auf 100 % hochzuzählen, um dann anschließend den Dialog zu schließen? Willst du so tun, also würde da tatsächlich eine Verarbeitung stattfinden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tapeman Geschrieben 2. März 2004 Autor Teilen Geschrieben 2. März 2004 Ja, es soll eine Datei geladen und angezeigt werden wieviel Prozent bereits geladen sind. Ich hatte es vorher mit einem extra Dialog probiert und eine ProgressBar benutzt, jedoch funktionierte es da nicht und ich kam auf den Gedanken, es gleich auf einen Anmeldedialog zu legen. Ich habe mich dann aber etwas vertan, da ich es nicht unsichtbar bekommen konnte/wollte. So wollte ich dann einfach nur ein Editfeld benutzen. Und das konnte ich eben nicht aktualisieren. Aber egal, ich habe es jetzt geschaft, damit es professioneller aussieht bin ich jetzt auf die ProgressBar zurückgekommen. Trotzdem Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 2. März 2004 Teilen Geschrieben 2. März 2004 Um solche Probleme zu vermeiden solltest du das Laden der Datei in einen extra Thread auslagern. Dann hast du keine Probleme das die Benutzeroberfläche nicht aktualisiert wird oder wegen Auslastung nicht reagiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tapeman Geschrieben 3. März 2004 Autor Teilen Geschrieben 3. März 2004 Der Anwender soll ja nicht einfach so weiter arbeiten, er soll ja sehen, das er mit großen komplizierten Sachen arbeitet und nichts kaputt machen soll. :-) Naja, so lange programmiere ich auch noch nicht, um so was hinzubekommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 3. März 2004 Teilen Geschrieben 3. März 2004 Dann solltest du denn Dialog der den Fortschritt anzeigt lieber Modal öffnen, dann kann der User auch nichts mehr im Hauptfenster machen. Das ist auf jeden Fall besser als den Hauptprozess zu überlasten. Wenn du hier im Forum nach Thread suchst bekommst du bestimmt ein paar nützliche Tipps. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tapeman Geschrieben 3. März 2004 Autor Teilen Geschrieben 3. März 2004 Bisher sind so und so alle meine Dialog(aufrufe) modal. Hoffe ich auch. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.