Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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

}

Unter Editfeld verstehe ich eigentlich das/ein Eingabefeld.

Ist doch eigentlich in der Schleife drinne.

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.

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?

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.

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.

Bisher sind so und so alle meine Dialog(aufrufe) modal.

Hoffe ich auch.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.