Problem mit SetCurSel bei Listfeld
-
Ich habe ein Listfeld in dem Datein aus einem Ordner angezeigt werden.Jetzt habe ich Button mit dem alle datein verschoben werden können doch irgent was geht nicht ganz.
UpdateData(TRUE); int zahl = m_ListWin.GetCount(); for(int count =0;count <= zahl;count++) { m_ListWin.SetCurSel(count); CString pfad = "C:\\Windows\\TEMP\\"; pfad += m_ListWinstr; CString newfile; newfile = "A:\\"; newfile += m_ListWinstr; MoveFile(pfad,newfile); Relese(); } UpdateData(FALSE);
-
Hi,
1. Die Indexe bei Listenfeldern beginnen immer mit 0 (!!!!).
d.h.:
"for(int count =0;count <= zahl;count++)"
sollte
for(int count =0;count < zahl;count++)
heißen. Da bei 4 Elementen der Index 4 nicht (!!) vorhanden ist2. "m_ListWin.SetCurSel(count);". Es so zu machen ist umständlich. Zum einen sieht der Benutzer, wie die Elemente nacheinander selektiert werden, zum anderen muss man, um es so zu machen wie du (über eine Membervariable des Typs CString des Listenfeldes) jedesmal ein UpdateData(); einfügen.
Versuche es mal so:CString sBuffer; for(int count = 0;count < m_ctrlList.GetCount();count++) { m_ctrlList.GetText(count,sBuffer); // Holt den Text des Elementes Nummer count und speichert ihn in sBuffer ......... // Dein weiterer Code ......... }
Damit müsste es funktionieren.
Ich hoffe, ich konnte dir weiterhelfen.
mfg TakeItEasy!