Как получить иконку из imagelist'а, связанную с элементом листа (CListCtrl) по индексу этого элемента?
Вся проблема в том, что после сортировки индексы с imagelist'е и в listctrl'е больше не соответствуют друг другу...
Здравствуйте misty, Вы писали:
M>Как получить иконку из imagelist'а, связанную с элементом листа (CListCtrl) по индексу этого элемента? M>Вся проблема в том, что после сортировки индексы с imagelist'е и в listctrl'е больше не соответствуют друг другу...
А как они вообще могут "индексы" соответствовать??
Пусть у нас есть СImageList из 2-х иконок (вкл/выкл) и 20 записей в CListCtrl у каждого одна из этих двух иконок.
И где здесь соответствее "индексов"??
Элементом CListCtrl является Item у которого есть текст, иконка, подэлементы, состояние и т.д. И при сортировке сортируються Item-ы вместе со всеми своими свойствами, а не текст (хотя я не знаю как ты сортируешь).
А получить индекс иконки в СImageList:
[msdn]
BOOL CListCtrl::GetItem( LVITEM* pItem );
pItem — Pointer to anLVITEM structure that receives the item’s attributes.
Retrieves some or all of a list view item’s attributes.
[/msdn]
Re[2]: CImageList & CListCtrl
От:
Аноним
Дата:
23.04.02 06:28
Оценка:
L>А как они вообще могут "индексы" соответствовать??
Я немного некорректно выразился: есть CListCtrl и есть CImageList, причем каждому элементу первого соответствует одна иконка во втором. Потом производится сортировка и индексы иконок и элементов листа перестают совпадать
L>А получить индекс иконки в СImageList: L>[msdn] L>BOOL CListCtrl::GetItem( LVITEM* pItem ); L>pItem — Pointer to anLVITEM structure that receives the item’s attributes. L>Retrieves some or all of a list view item’s attributes. L>[/msdn]
Спасибо, я умею читать MSDN :)))
Проблема в том, что ты сам написал (списал):
pItem — Pointer to anLVITEM structure that receives the item’s attributes.
Если конкретнее, то меня смутил тот факт, что pItem ТОЛЬКО принимает инфу про элемент. Соответственно, куда у функции GetItem надо забить номер элемента?
Если в pItem.iItem, то вопрос исчерпан
thanx
L>А как они вообще могут "индексы" соответствовать??
Ну неправильно я выразился: есть CListCtrl и есть CImageList, причем каждому элементу листа соответствует одна иконка в imagelist'е. А после сортировки номера элементов в листе меняются.
L>А получить индекс иконки в СImageList:
L>BOOL CListCtrl::GetItem( LVITEM* pItem ); L>pItem — Pointer to anLVITEM structure that receives the item’s attributes. L>Retrieves some or all of a list view item’s attributes.
Я умею читать MSDN :)))
Вопрос такой: как по номеру элемента получить структуру LVITEM, и из нее уже можно выковырять iImage
Надо ли забивать номер элемента в pItem.iItem или он передается функции как-то иначе?