Subitems in CListCtrl einfügen - Problem
-
Hi Fans,
m_lvElements ist mein CListCtrl und darin gibt es 4 Spalten (Id, Type, Index, Name). In einer Schleife lese ich aus m_DpList Datenpunkte aus und schreibe diese in das CListCtrl. Komischerweise werden dann aber nur die Ids angezeigt, er Rest der Spalten bleibt leer:
m_lvElements.DeleteAllItems(); UpdateData(TRUE); m_lvElements.SetRedraw(FALSE); for (int i=0;i<Client->m_DpList.size();i++) { DP_ENTRY &dp = Client->m_DpList.at(i); LVITEM lvi; CString strItem; // Caption lvi.mask = LVIF_IMAGE | LVIF_TEXT; strItem.Format(_T("%i"), i+1); lvi.iItem = i+1; lvi.iSubItem = 0; lvi.pszText = (LPTSTR)(LPCTSTR)(strItem); lvi.iImage = -1; m_lvElements.InsertItem(&lvi); // subitem 1 strItem.Format(_T("%i"), (int)dp.byIpType); lvi.iSubItem = 1; lvi.pszText = (LPTSTR)(LPCTSTR)(strItem); m_lvElements.SetItem(&lvi); // subitem 2 strItem.Format(_T("%i"), (int)dp.wIpIndex); lvi.iSubItem = 2; lvi.pszText = (LPTSTR)(LPCTSTR)(strItem); m_lvElements.SetItem(&lvi); // subitem 3 lvi.iSubItem = 3; lvi.pszText = dp.szName; m_lvElements.SetItem(&lvi); } m_lvElements.SetRedraw(TRUE);
Warum?
-
Vermutlich musst Du die "LVIF_IMAGE" Mask bei den SubItems wegnehmen...
-
Ok, ich mach's jetzt so:
m_lvElements.DeleteAllItems(); UpdateData(TRUE); m_lvElements.SetRedraw(FALSE); for (int i=0;i<Client->m_DpList.size();i++) { DP_ENTRY &dp = Client->m_DpList.at(i); CString strItem; strItem.Format(TEXT("%d"), i+1); // Insert the item, select every other item. m_lvElements.InsertItem(LVIF_TEXT|LVIF_STATE, i, strItem, 0, LVIS_SELECTED, 0, 0); strItem.Format(TEXT("%d"), dp.byIpType); m_lvElements.SetItemText(i, 1, strItem); strItem.Format(TEXT("%d"), dp.wIpIndex); m_lvElements.SetItemText(i, 2, strItem); strItem.Format(TEXT("%s"), dp.szName); m_lvElements.SetItemText(i, 3, strItem); } m_lvElements.SetRedraw(TRUE);
Das funktioniert.
-
Das ist noch schöner