ListView + Icons
-
Hallo Leute!
Ich habe gerade ein ListView Control mit mehreren Einträgen erstellt. Dem Steuerelement ist auch eine ImageList zugewiesen, ein Icon wird angezeigt. Und genau da liegt das Problem. Es wird immer dasselbe Icon angezeigt. In der ImageList gibt es aber zwei verschiedene Icons. Wie bringe ich einen Eintrag dazu, das zweite Icon anzuzeigen?
Hier noch meine drei Funktionen zur Verwaltung des ListView (das Control ist in einem Dialog, wird also nicht explizit erstellt):void ListViewInsertItem(HWND hWndListView, SERVSTRUCT extStruct) { int iIndex = 0; LV_ITEM lvi; lvi.mask = LVIF_TEXT; lvi.iSubItem= 0; lvi.pszText = LPSTR_TEXTCALLBACK; // app. maintains text lvi.iItem = iIndex; lvi.pszText = extStruct.szRights; lvi.iImage = 2; //REICHT DAS NICHT??? iIndex = ListView_InsertItem(hWndListView, &lvi); ListView_SetItemText(hWndListView, iIndex, 1, extStruct.szRights); ListView_SetItemText(hWndListView, iIndex, 2, extStruct.szFilename); char size[100]; sprintf(size, "%.0f", extStruct.i64FileSize); ListView_SetItemText(hWndListView, iIndex, 3, size); } void InitializeListView(HWND hWndListView) { SendMessage(hWndListView, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)LVS_EX_FULLROWSELECT); CreateColumn(hWndListView, 0, "", 18); CreateColumn(hWndListView, 1, "Rechte", 65); CreateColumn(hWndListView, 2, "Dateiname", 104); CreateColumn(hWndListView, 3, "Größe", 100); } BOOL WINAPI InitListViewImageLists(HWND hwndLV, HINSTANCE hInst) { HICON hiconItem; // icon for list view items HICON hiconItem2; // icon for list view items HIMAGELIST himlLarge; // image list for icon view HIMAGELIST himlSmall; // image list for other views // Create the full-sized and small icon image lists. himlLarge = ImageList_Create(GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), TRUE, 1, 1); himlSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), TRUE, 1, 1); // Add an icon to each image list. hiconItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_FOLDER)); hiconItem2 = LoadIcon(hInst, MAKEINTRESOURCE(IDI_FILE)); ImageList_AddIcon(himlSmall, hiconItem); ImageList_AddIcon(himlSmall, hiconItem2); DeleteObject(hiconItem); DeleteObject(hiconItem2); // Assign the image lists to the list view control. //ListView_SetImageList(hwndLV, himlLarge, LVSIL_NORMAL); ListView_SetImageList(hwndLV, himlSmall, LVSIL_SMALL); return TRUE; }
[ Dieser Beitrag wurde am 27.05.2003 um 18:21 Uhr von hackbert editiert. ]
-
lvi.mask = LVIF_TEXT;
Wenn Du der Maske nicht sagst, dass Image einen validen Eintrag besitzt, wird es auch nicht übernommen!
-
Danke, jetzt geht es!