Zum Inhalt springen

Editfeld füllen


Tapeman

Empfohlene Beiträge

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();

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...