CEdit - EditFeld nach UpdateData sofort aktualisieren
- 
					
					
					
					
 hi 
 habe einen kleinen dialog mit einem edit-feld und einen buttonvoid CUpdatetestDlg::OnStart() { for(int i=0;i<100000;i++) { m_counter=i; UpdateData(FALSE); } }das wird aufgerufen wenn ich auf den button drücke, m_counter ist die variable für das edit-feld (vom typ long). 
 wenn ich das programm starte und dann auf den start-button klick passiert folgendes:
 es steht am anfang 0 drinnen und nach 2 sekunden 99999was muss ich machen damit innerhalb der 2 sekunden angezeigt wird, das der counter immer um 1 erhöht wird ???? 
  EDIT: 
 Titel geändert.
 - dEUs[ Dieser Beitrag wurde am 23.08.2002 um 11:47 Uhr von dEUs editiert. ] 
 
- 
					
					
					
					
 Hallo, soweit ich weiß, hängt die Nachrichtenverarbeitung deiner Applikation bei so einer Schleife fest, d.h. dein edit-Feld wird nicht aktualisiert. Abhilfe schafft hier ein Timer, der den counter hochzählt und sich dann bei erreichen des Ziels selber wieder killt. Gruß mathi 
 
- 
					
					
					
					
 Hallo! Es geht auch anders! Einfach diese Funktion in der Schleife ab und zu aufrufen: 
 --------------------------------------------------------void CWipeFreeDlg::DoEvents() // Evtl. Anstehende Events ausführen { MSG msg; // Message Variable // Process existing messages in the application's message queue. // When the queue is empty, do clean up and return. while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) { // Solange Messages vorhanden if (!AfxGetThread()->PumpMessage()) return; // Kein plan... :-) } }-------------------------------------------------------- Und könnte das bitte Jemand unter einer vernunftigen Überschrift in den FAQ's plazieren? Das interresiert bestimmt einige... Ciao! 
 
- 
					
					
					
					
 cool funktioniert thx für die schnellen antworten ! 
 
- 
					
					
					
					
 Hallo nochmal, Also mit dem Timer hole ich bei meinem Test gerade mal ca. 150 Werte in 2s herraus. @PanicMan: Deine Version ist deutlich schneller. Ist auch irgendwie eleganter - hab mal wieder was dazu gelernt. Gruß mathi 
 
- 
					
					
					
					
 Jo! Tja, habe ich selbst vor ein paar Monaten hier in dem Forum erfahren...  So und jetzt heißt es sein wissen weitergeben... Ciao! 
 
- 
					
					
					
					
 Hallo ! Noch eine Möglichkeit: CString text; for(int i=0;i<100000;i++) { // m_counter=i; // UpdateData(FALSE); // wenn es auch ohne UpdateData sein darf... text.Format("%i", i); // keine Lust, eine Editfeldmembervariable anzulegen SetDlgItemText(IDC_EDIT1, text); // keine Lust, eine Editfeldmembervariable anzulegen GetDlgItem(IDC_EDIT1)->RedrawWindow(); // Editfeld neu zeichnen }Ohne eine "Bremse" sieht man aber nur ein Flimmern in dem Eingabefeld...  Tschüss