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

Элемент управления "дерево" может отображать два типа изображений: основное и изображение состояния. Все они располагаются слева от текста элемента. Для установки обычных (не состояния) изображений, Вы должны использовать функцию 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: Определение иконок для элементов

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