2013-01-18 2 views
0

Я добавил элементы в ListControl, у них есть изображения. Теперь я хочу изменить их, я попытался сделать GetItem и SetItem, но я не смог. По крайней мере, я не знаю, как получить предмет, который я хочу. Как я могу изменить изображение элемента в ListView?MFC ListView Change Item Image

P.S.

Мне удалось решить эту проблему. Вот решение:

Это как петля

LVITEMW pitem; 
ZeroMemory(&pitem, sizeof(pitem)); 

pitem.mask = LVIF_TEXT | LVIF_IMAGE; 
pitem.iItem = <SET INDEX OF YOUR ITEMS HERE, YOU CAN LOOP HERE>; 
pitem.iSubItem = 0; 
pitem.pszText = new wchar_t[256]; 
pitem.cchTextMax = 255; 
mlist.GetItem(&pitem); 

И после выбора пункта, вы можете изменить это изображение, как это:

pitem.iImage = newindex; 
mlist.SetItem(&pitem); 
+0

P.S. это CListCtrl –

ответ

0

Использование CListCtrl::SetItem прав. Вы должны установить для параметра nMask значение LVIF_IMAGE и указать индекс изображения в списке изображений в параметре iImage.

+0

Я уже добавил элементы, например: mlist.InsertItem (0, Пользователь, imgstatus); imgstatus - это индекс изображения в ImageList, и добавление элементов хорошо работает. Теперь, как я могу выбрать определенный элемент в ListView и как я могу назвать SetItem? –

+0

Вам нужно знать индекс элемента, чтобы изменить его. Перебирайте все элементы, чтобы найти конкретный, или используйте 'GetNextItem', чтобы найти выбранные элементы. – dwo

+0

Как знать этот предмет - это то, что я ищу? Является ли pszText хорошим выбором? Текст pszText содержит текст, когда я добавил его с помощью InsertItem? –