ListView Subitems werden nur einmal angezeigt
-
Tag allerseits,
in einer Software kommt u. a. ein ListView fuer eine Userliste zum Einsatz.
Die ListView ist in 4 Spalten eingeteilt. In der ersten Spalte wird ein
Icon, in der zweiten der Username und in den restlichen wieder Icons angezeigt.Nun habe ich das Problem, dass beim Hinzufuegen eines Users dieser nur einmal
angezeigt wird. Loesche ich ihn und fuege in erneut hinzu, so wird nur noch
das Icon in der ersten Spalte angezeigt, die restlichen Spalten sind alle
leer. Woran kann das liegen?Etwas code:
int ListView::add_item(int col, int row, wchar_t* text, bool use_user_data, LPARAM user_data) { LVITEM lvItem; memset(&lvItem, 0, sizeof(LVITEM)); lvItem.mask = LVIF_TEXT | LVIF_PARAM; lvItem.iItem = row; lvItem.iSubItem = col; lvItem.iImage = -1; if(use_user_data) { lvItem.lParam = user_data; } if(text) lvItem.pszText = text; return ListView_InsertItem(hwnd(), &lvItem); } bool ListView::add_subitem(int col, int row, wchar_t* text) { LVITEM item; memset(&item, 0, sizeof(LVITEM)); item.mask = LVIF_TEXT; item.iItem = row; item.iSubItem = col; item.pszText = text; item.iImage = -1; return ListView_SetItem(hwnd(), &item); } bool ListView::add_subitem_image(int col, int row, int img_idx) { LVITEM item; memset(&item, 0, sizeof(LVITEM)); item.mask = LVIF_IMAGE; item.iItem = row; item.iSubItem = col; item.iImage = img_idx; return ListView_SetItem(hwnd(), &item); }Ist an dem Code irgendwas falsch? Muss ich noch etwas besonderes beachten?
Woran koennte es sonst noch liegen?
gruss
v R
-
Column 0 | Column 1 | Column 2 | Column 3 | ----------+-----------+-----------+-----------+ Item(0) | SubItem(1)| SubItem(2)| SubItem(3)| SubItem(0)| | | | ----------+-----------+-----------+-----------+ Item(1) | SubItem(1)| SubItem(2)| SubItem(3)| SubItem(0)| | | | ----------+-----------+-----------+-----------+ Item(2) | SubItem(1)| SubItem(2)| SubItem(3)| SubItem(0)| | | | ...Ist bei deinem Item das du zuerst immer einfügst lvi.SubItem auch immer 0 ?
die drauf einzu fügenden SubItems müssten dann
lvi.SubItem = 1: für die zweite Spalte,
lvi.SubItem = 2: für die dritte Spalte,
lvi.SubItem = 3: für die vierte Spalte,
sein.Gruß Tobi.
-
Hallo,
ja das ist es. Ein Kumpel von mir hat eben den Bug schon gefunden, trotzdem
danke fuer die Antwort.gruss
v R
-
Bug

Gruß Tobi.