CListCtrl wir in umgedrehter Reihenfolge angezeigt!?

bazteka_burnz

Grünschnabel
Hallo

Ich habe ein CListCtrl und zwei Progressbars in meinem MFC-Programm. Ich mache damit nur eine Demo-Applikation, deshalb schreib ich die Werte direkt in die Progressbars, bzw, die Liste.
Die Liste ist in der Ansicht auf Bericht eingestellt und hat nur eine Spalte.
Wenn ich die Applikation ausführe, dann läuft die Progressbar durch, aber die Liste wird nicht aktualisiert. Wenn die Progressbar fertig ist, wird die Liste mit den Werten gefühlt, aber in der "falschen" Reihenfolge. Flash deshalb, weil der Wert, den ich zuletzt reingeschrieben habe zuerst angezeigt wird und der Wert, den ich zuerst reingeschrieben habe zuletzt angezeigt wird.
Wie kann ich die Applikation dazu zwingen die Werte direkt einzutragen

Hier noch der Code:
Code:
m_ctrlListFlashMessages.InsertColumn(0,_T("Message"),LVCFMT_LEFT,400);
m_ctrlListFlashMessages.InsertItem(0,_T("scanning network..."));		

		
while (nProgressCurrentProcess<=100)
{		
	m_ctrlProgressCurrentECU.SetPos(nProgressCurrentProcess);
	nProgressCurrentProcess+=2;
       	Sleep(50); //damit's nicht zu schnell geht und man den Progressbar noch sieht
}

m_ctrlListFlashMessages.InsertItem(0,_T("Done!"));

nProgressTotalProcess+=2;
m_ctrlProgressTotal.SetPos(nProgressTotalProcess);

... und ich bekommen jetzt in meinem ListCtrl folgendes angezeigt:
Done!
scanning network...


Vielen Dank schonmal für eure Posts.
 
Das Problem liegt bei InsertItem(0, ...). Damit fügst ein neues Element immer an der ersten Stelle ein. Um am Ende der Liste anzuhängen, kannst du das so machen:
C++:
m_ctrlListFlashMessages.InsertItem(m_ctrlListFlashMessages.GetItemCount(),_T("..."));
Gruß
MCoder
 
Okay, danke MCoder.
Das mit der Reihenfolge passt jetzt. Aber wie bekomme ich es in den Griff, dass die CListCtrl immer dann neu gezeichnet wird, wenn ich da was reinschreibe, bzw, einen Eintrag mit InsertItem(...) hinzufüge? Die Progressbars werden immer zuerst gezeichnet und wenn die fertig sind, werden alle Einträge auf einmal i die Liste eingefügt.
 
Das sollte mit
Code:
m_ctrlListFlashMessages.UpdateWindow()
gehen. Direkt nach den InsertItem aufrufen.
 

Neue Beiträge

Zurück