Icon in Sub-Item eines List Views hinzufügen (LVS_REPORT-Style)
-
Hallöchen,
ich habe ein kleines (hoffentlich) Problem mit einem List View-Element.
Und zwar klappt das Erstellen und Einfügen von Items schon wunderbar, leider kann ich Icons nur in der ganz linken Spalte darstellen.Hier ein Bild, wie es aussieht:
http://derfeind2k.de/daten/listview.jpg
Links bei der roten Markierung kann man Icons einbauen, rechts sollen in die 3te Spalte auch Icons hin, dies funktioniert allerdings nicht. Ich verwende als Code den selben wie zum Einfügen des Icons in die erste Spalte, wo es funktioniert.
Dies ist erstmal der Code zum setzen des Icons in das jeweilige Item:
void ctrl_listbox::set_item_image(int index, int column, int image_index) { int temp_index = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0); if (index < temp_index) { temp_index = index; } LV_ITEM item; item.mask = LVIF_IMAGE; item.iItem = temp_index; item.iSubItem = column; item.state = 0; item.stateMask = 0; item.pszText = 0; item.cchTextMax = 0; item.iImage = image_index; item.lParam = 0; SendMessage(hwnd, LVM_SETITEM, 0, (int)&item); }Man gibt also den Zeilenindex, die Spalte und den Index des Images aus der Imagelist an und dort soll es dann erstellt werden. Klappt auch prima, solange man als Spalte "0" nimmt, und damit die ganz linke Spalte.
Das Listview-Element wird wie folgt erstellt:
void ctrl_listbox::create(int command, int p_pos_x, int p_pos_y, int p_size_x, int p_size_y, char* text, int p_size, HWND p_parent, int style) { hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | LVS_REPORT | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | style, p_pos_x, p_pos_y, p_size_x, p_size_y, parent, (HMENU)command, GetModuleHandle(0), //Instance of current application NULL); SendMessage(hwnd, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), true); SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_GRIDLINES, LVS_EX_GRIDLINES); //Grindlines SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); //Full row selected himagelist = ImageList_Create(16, 16, ILC_COLOR32, 0, 100); //Create imagelist SendMessage( hwnd , LVM_SETIMAGELIST , LVSIL_SMALL, (LPARAM)himagelist); //Add imagelist to listview LV_COLUMN column; column.mask = LVCF_TEXT |LVCF_WIDTH | LVCF_FMT; column.fmt = LVCFMT_LEFT; column.cx = p_size; column.pszText = text; column.cchTextMax = strlen(text); column.iSubItem = NULL; SendMessage(hwnd, LVM_INSERTCOLUMN, 0, (int)&column); }Es ist also ein "LVS_REPORT"-Element (von den 4 Styles, die es da gibt) und wie in der WinAPI-Help steht, wird dort Standardgemäß links in der ersten Spalte ein Icon angezeigt. Könnte das bedeuten, dass man NUR dort ein icon anzeigen kann und in den anderen Spalten jeweils nur Text? Jedenfalls gibt es ja noch andere Styles wie LVS_ICON oder LVS_LIST, wo bei jedem Element ein Icon und Text dabei ist. Allerdings fehlt mir da der Header mit den Spalten, wie beim LVS_REPORT-Element, welches ich deshalb hier verwende.
Die Frage ist, gibt es vielleicht eine Möglichkeit, trotzdem Icons (bzw Images aus der Imagelist des Fensters) hinzuzufügen, in die 3te Spalte dieses List Views?Ich wär für jeden Tipp oder Lösungs-Hinweis sehr dankbar.
Grüße,
Ynnus
-
Hat denn hier echt noch niemand ein List View Fenster mit mehreren Icons in den Spalten erstellt? Ich suche doch nur eine Möglichkeit, das zu machen. Ein Code-Beispiel oder ein Tutorial, irgendwas, wo man sehen kann, wie man das machen kann und das es überhaupt machbar ist mit dem LVS_REPORT-Style.
-
Lol, hab grad mal was gefunden, was dich vllt. weiterbringen könnte...:

LVS_EX_SUBITEMIMAGES
Version 4.70.
Allows images to be displayed for subitems.
This style is available only in conjunction with the LVS_REPORT style.
-
Es geht, ich glaub's ja nicht.

Vielen vielen herzlichen Dank, das ist echt ne Sache gewesen die mir Kopfzerbrechen bereitet hat.
-
Ynnus schrieb:
Es geht, ich glaub's ja nicht.

Vielen vielen herzlichen Dank, das ist echt ne Sache gewesen die mir Kopfzerbrechen bereitet hat.
Und ich dachte schon, dass du es gar nicht mehr brauchst - perfekt konnte ich ja doch helfen *freu* ^^