Иллюстрированный самоучитель по Visual Studio.Net


Список изображений, ассоциируемый с деревом - часть 2


Повторив эту процедуру столько раз, сколько необходимо иметь различающихся изображений, закончите тем, что последнему из них присвойте ID = IDB_N. Имена идентификаторов произвольны. Важно только то, что их числовые эквиваленты должны следовать подряд. Если вы не отрывались на создание других ресурсов, то Studio.Net сделала это автоматически. Будем считать, создано 3 изображения, и индекс последнего из них равен IDB_3. Для того что бы связать список с деревом вместо строки m_Tree. Insert I tern ("Item", 0,0); В функцию OnlnitialUpdate вставьте такой фрагмент:

//====== Традиционный для MS двухступенчатый способ

//====== создания нового объекта - списка изображений

m_pImgList = new CimageList;

m_pImgList->Create(16, 16, ILC_MASK, 0, 32);

for (UINT nID = IDB_1; nID <= IDB_3; nID++)

{

//====== Временный объект

CBitmap bitmap;

//====== Загрузка из ресурсов

bitmap.LoadBitmap(nID);

//====== Добавление в конец списка изображений

m_pImgList->Add(Sbitmap, (COLORREF)OxFFFFFF);

//====== Освобождаем память

bitmap.DeleteObject();

}

//=== Связывание списка изображений с объектом

CTreeCtrl m_Tree.SetlmageList(m_pImgList, TVSIL_NORMAL);

Параметры функции Create задают размеры изображений, их тип, начальный размер списка и квант его приращения при вставке новых изображений. Цикл загрузки изображений и вставки их в список будет корректно работать, только если их индексы следуют подряд. Метод SetlmageList связывает список с деревом, то есть элементом управления m_Tree типа CTreeCtrl. После этого можно начать формировать дерево.

Вставку новых ветвей осуществляют несколькими способами. Рассмотрим один из них, использующий специальную структуру типа TVINSERTSTRUCT. Просмотрите справку по этому типу, чтобы знать состав полей структуры. Обычно необходима одна глобальная структура такого типа. Это удобно, так как ею могут пользоваться несколько разных функций. В начало файла LeftView.cpp (после директив препроцессора) вставьте определение:

TVINSERTSTRUCT gtv; // Глобальная структура




Начало  Назад  Вперед