ListView befüllen - so richtig?
-
Nach langem hin und her habe ich es endlich hinbekommen, dass das ListView mit zwei Testzeilen an Daten befüllt wird. Allerdings bin ich mir nach dem ganzen probieren und gefrimmele nicht wirklich sicher, ob der Code so richtig ist oder nicht.
// Create ListView //---------------------------------- hListView = CreateWindow( WC_LISTVIEW, Null, WS_CHILD | WS_VISIBLE | LVS_REPORT| WS_BORDER, 10, 10, 780, 430, hWnd, 00, g_hInst, Null); // Create Header Columns //---------------------------------- LV_COLUMN lvc lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH | LVCF_FMT ; lvc.fmt = LVCFMT_LEFT lvc.iSubItem = 0; lvc.cx = 100; lvc.pszText = "Anrede"; SendMessage(hListView, LVM_INSERTCOLUMN, 0, lvc) lvc.iSubItem = 1; lvc.cx = 250; lvc.pszText = "Vorname"; SendMessage(hListView, LVM_INSERTCOLUMN, 1, lvc) lvc.iSubItem = 2; lvc.cx = 250; lvc.pszText = "Nachname"; SendMessage(hListView, LVM_INSERTCOLUMN, 2, lvc) // Create items / Fill List //---------------------------------- LVITEM LvItem // 1. Zeile im ListView hinzufügen LvItem.mask = LVIF_TEXT; LvItem.cchTextMax = 256; LvItem.iItem = 0 LvItem.iSubItem = 0 SendMessage(hListView, LVM_INSERTITEM, 0, LvItem); LvItem.iItem = 0; LvItem.iSubItem = 0; LvItem.pszText = "Herr"; SendMessage(hListView, LVM_SETITEM, 0, LvItem); LvItem.iItem = 0; LvItem.iSubItem = 1; LvItem.pszText = "Karl"; SendMessage(hListView, LVM_SETITEM, 0, LvItem); LvItem.iItem = 0; LvItem.iSubItem = 2; LvItem.pszText = "Mustermann"; SendMessage(hListView, LVM_SETITEM, 0, LvItem); // 2. Zeile im ListView hinzufügen LvItem.mask = LVIF_TEXT; LvItem.cchTextMax = 256; LvItem.iItem = 1 LvItem.iSubItem = 0 SendMessage(hListView, LVM_INSERTITEM, 0, LvItem); LvItem.iItem = 1; LvItem.iSubItem = 0; LvItem.pszText = "Frau"; SendMessage(hListView, LVM_SETITEM, 0, LvItem); LvItem.iItem = 1; LvItem.iSubItem = 1; LvItem.pszText = "Anne"; SendMessage(hListView, LVM_SETITEM, 0, LvItem); LvItem.iItem = 1; LvItem.iSubItem = 2; LvItem.pszText = "Musterfrau"; SendMessage_(hListView, LVM_SETITEM, 0, LvItem);
-
http://www.c-plusplus.net/forum/275735
Vergleiche einfach damit. Wenn der Code funktioniert, ist das oft (nicht immer) ein Zeichen, dass du alles richtig gemacht hast.
Wenn ich mich nicht irre, dann verlangt LVM_INSERTITEM et al. einen Pointer auf die entsprechenden Strukturen. Du übergibst allerdings quasi eine Kopie und keinen Pointer.
-
Cool! Vielen Dank für den Link! Werde ihn mir morgen nochmal mal in Ruhe durchlesen. Habe ihn gerade auf die schnelle Überflogen. Werde dann mal schauen, ob mein Code ansonsten soweit richtig ist oder nicht ^^