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


Обращаемся к операционной системе



Теперь, когда вы научились управлять формой дерева, мы продолжим развитие приложения. Используя клавишу Delete, удалите все ресурсы типа Bitmap. Удалите также глобальное объявление структуры TVINSERTSTRUCT. Теперь мы покажем, что можно обходиться и без ее помощи. Уберите весь учебный код, следующий после строки m_plmgList = new CImageList, и вставьте новый, так, чтобы функция приобрела вид:

void CLeftView::OnInitialUpdate()

{

CTreeView::OnInitialUpdate();

::SetWindowLongPtr(m_Tree.m_hWnd, GWL_STYLE, GetWindowLong(m_Tree.m_hWnd, GWL_STYLE)|TVS_HASLINES I TVS_HASBUTTONSITVS_LINESATROOT|TVS_SHOWSELALWAYS);

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

m_pImgList = new CImageList;

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

GetSvsImqList () ;

//====== Получаем имена логических дисков

char s [1024] ;

DWORD size = ::GetLogicalDriveStrings (1024, s);

if (Isize) // В случае отказа

return; // уходим молча

//=== Сканируем текст и вставляем новые узлы дерева

for (char *pName = s; *pNarae; pName += strlen(pName)+1)

Addltem (TVI_ROOT, pName);

}

Функция GetSysimgList, которую мы создадим чуть позже, получает от системы список системных значков и связывает его с деревом. Начать показ файлового дерева мы решили с демонстрации всех логических дисков, имеющихся в операционной системе в данный момент. API-функция GetLogicalDriveStrings заполняет строку текста, в которую она помещает перечень всех присутствующих в операционной системе логических дисков. Строка имеет особый формат: она состоит из нескольких подстрок, завершающихся нулем, например:

a:\0c:\0d:\00

Обратите внимание на то, что признаком конца перечня являются два нулевых байта. Первый завершает подстроку, а второй — всю строку. Используя эту особенность, мы создали цикл for (), в котором подстроки — имена логических дисков, сначала выявляются, а затем используются для вставки в дерево узлов, соответствующих логическим дискам. Функция Addltem, которую создадим позже, определяет индекс значка, соответствующего вставляемой сущности (диск, папка или файл), и создает в дереве новый узел с соответствующим ему изображением.




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