CImageList & CListCtrl
От: misty  
Дата: 22.04.02 19:31
Оценка:
Как получить иконку из imagelist'а, связанную с элементом листа (CListCtrl) по индексу этого элемента?
Вся проблема в том, что после сортировки индексы с imagelist'е и в listctrl'е больше не соответствуют друг другу...
Re: CImageList & CListCtrl
От: Lion Россия  
Дата: 23.04.02 01:42
Оценка:
Здравствуйте 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
Re[2]: CImageList & CListCtrl
От: misty  
Дата: 23.04.02 06:38
Оценка:
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 или он передается функции как-то иначе?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.