"AND" "OR"
Главная Информер Журнал Форум

Установка списка изображений для элементов дерева

 

Элемент управления "дерево" может отображать два типа изображений: основное и изображение состояния. Все они располагаются слева от текста элемента. Для установки обычных (не состояния) изображений, Вы должны использовать функцию SetImageList(), которая принимает в качестве аргумента указатель на список изображений. Можно создать список из одной картинки или добавлять в него отдельные иконки.

Шаг 1: Создание картинки


Добавить картинку, которая содержит все необходимые иконки, в редакторе ресурсов. В примере индивидуальный размер икноки равен 13x13, однако Вы можете выбрать другие параметры высоты и ширины.



Шаг 2: Добавление член-переменной списка изображений


Член-переменная обычно добавляется в класс ответственный за установку "дерева". Это как правило CView или CDialog производная. Вы также можете добавить ее наследника CTreeView, что очень удобно и я всячески рекомендую делать именно так.


class CTreeCtrlX : public CTreeCtrl 
{ 
 // Construction 
 public: 
        CTreeCtrlX(); 

 // Attributes 
 public: 
        CImageList m_image ; 
} 
 

 

Шаг 3: Создание и установка списка изображений

Вызываем метод Create() объекта изображений вместе с идентификотором ресурса изображения, которое мы создали в Шаге 1, и шириной каждой иконки. Высота по умолчанию устанавливается равной высоте изображения. Третий аргумент передаваемый Create() указывает на число изображений в списке. Последний аргумент - цвет маски, с помощью которого можно задать прозрачный фон для нашего списка.


m_tree.m_image.Create( IDB_OUTLINE, 13, 1, RGB(255,255,255) );
m_tree.SetImageList( &(m_tree.m_image), TVSIL_NORMAL );

 

Шаг 4: Определение иконок для элементов

Как только список изображений связан с "деревом", оно сразу отображает иконку слева от текста. Место под картинку выделяется автоматически. При добалении нового элемента можно определить какое изображение надо показывать рядом. В последствии его можно изменить по своему усмотрению.

 

 

Источник: ProtoSphere