Problem beim löschen markierter einträge vom listview
-
Hey ich versteh das nicht warum wir nur jedes zweites Item gelöscht bei meiner Funktion?
int DelteItems(HWND hwnd,bool global) { if (global==true) { SendMessage(hwnd, LVM_DELETEALLITEMS , (WPARAM)0, (LPARAM) (HTREEITEM)NULL); includeText("Alle Items wurden gelöscht"); } else { for (long i = 0; i <= ListView_GetItemCount(hwnd) ; i++) { if (ListView_GetItemState(hwnd,i,LVIS_SELECTED)) { SendMessage(hwnd, LVM_DELETEITEM, (WPARAM)(int)i, 0); } } includeText("Martierte(s) Item(s) wurden erfolgreich gelöscht"); } }
-
Ich schätze mal, wenn ein Item gelöscht wird, rücken die anderen auf. Demnach solltest du "i" nicht inkrementieren, wenn ein Item gelöscht wird bzw. einfach ein "i--;".
-
Du hattest Recht so ein blöder Fehler ich hab es nun so gelöst:
int DelteItems(HWND hwnd,bool global) { if (global==true) { SendMessage(hwnd, LVM_DELETEALLITEMS , (WPARAM)0, (LPARAM) (HTREEITEM)NULL); includeText("Alle Items wurden entfernt"); } else { for (int i=ListView_GetItemCount(hwnd);i>=0 ; i--) { if (ListView_GetItemState(hwnd,i,LVIS_SELECTED)) { SendMessage(hwnd, LVM_DELETEITEM, (WPARAM)i, (LPARAM) (HTREEITEM)NULL); } } includeText("Martierte(s) Item(s) wurden erfolgreich entfernt"); } }
-
Eine andere Möglichkeit ist es ListView_GetNextItem zu verwendne
int i = 0; while ((i=ListView_GetNextItem(hwnd,i-1,LVIS_SELECTED))!=1) ListView_DeleteItem(hwnd, i);