Як вставити CTreeListCtrl в свій проект?, Робота з графікою, оформлення, ефекти, C / C + +, статті

Для цього досить зробити два простих кроки:


  1. Додайте файли CTreeListCtrl.h і CTreeListCtrl.cpp в свій проект.
  2. Імпортуйте State.bmp як ресурс і надайте йому ідентифікатор IDB_STATE.

Тепер все готово для його використання.


Використання CTreeListCtrl


Припустимо у Вашому розділі жорсткого диска є дві директорії: Program Files
і Winnt. У Program Files містяться ще три папки: Microsoft Office, Microsoft
Visual Studio і InstallShield. У Winnt містяться дві папки: profiles і
system32, а в папці profiles містяться All Users, Administrator і Davidc.
Порядок додавання елементів в дерево буде наступним:


  1. C:
  2. Program Files
  3. Microsoft Office
  4. Microsoft Visual Studio
  5. InstallShield
  6. Winnt
  7. profiles
  8. All Users
  9. Administrator
  10. system32

А тепер давайте розглянемо основні кроки використання такого дерева:


  1. Оголошуємо змінну член (m_tree) в класі батьківського вікна.
  2. У функції-обробнику події WM_CREATE або WM_INITDIALOG створіть вікно
    дерева. Так само можна його використовувати через DDX_Control.
  3. Додайте стільки стовпців, скільки необхідно.
  4. Створіть список картинок (image list) для цього елемента керування.
  5. Для додавання елементів дерева використовуйте функцію AddItem, встановлюючи
    тим самим їх рівень, а потім викликайте SetItemText для кожної колонки.

Далі представлений код, який створює дерево, яке зображено на малюнку.

 / / Перший крок: Створення вікна.

m_tree.Create
(
WS_BORDER | WS_CHILD | WS_VISIBLE | LVS_REPORT |
LVS_SINGLESEL | LVS_SHOWSELALWAYS,
CRect(12, 12, 288, 228),
this,
0x100
);

/ / Другий крок: вставляємо два стовпці: ім’я папки і розмір папки

LVCOLUMN column;

column.mask = LVCF_FMT | LVCF_IMAGE | LVCF_TEXT | LVCF_WIDTH;

column.fmt = LVCFMT_LEFT;
column.cx = 200;
column.pszText = _T("Folder");
column.iSubItem = 0;
m_tree.InsertColumn(0, &column);

column.fmt = LVCFMT_RIGHT;
column.cx = 75;
column.pszText = _T("Size");
column.iSubItem = 1;
m_tree.InsertColumn(1, &column);

/ / Третій крок: створюємо і заповнюємо список картинок (image list)

m_il.Create(IDB_FOLDERS, 16, 1, RGB(255, 0, 255));
m_tree.SetImageList(&m_il, LVSIL_SMALL);

/ / Четвертий крок: Заповнюємо вміст дерева.

CString asFolders[] =
{
"C:", "Program Files", "Microsoft Office",
"Microsoft Visual Studio", "InstallShield",
"Winnt", "profiles", "All Users", "Administrator" ,
"system32"
};

CString asSizes[]=
{ "100", "60", "10", "20", "30", "40", "5",
"2", "1" , "35"
};
int anLevels[] = { 0, 1, 2, 2, 2, 1, 2, 3, 3, 2 };

for (int i = 0; i < sizeof(asFolders) /
sizeof(asFolders[0]); i++)
{
int iItem;
iItem = m_tree.AddItem(asFolders[i], i % 3, anLevels[i]);
m_tree.SetItemText(iItem, 1, asSizes[i]);
}


Приклад програми


Додаток, для якого було потрібно таке дерево, це програма, яка
досліджує логічний диск на предмет наявності директорій і показує розмір
кожній директорії. Після отримання такої інформації дуже легко почистити свій
вінчестер від непотрібного мотлоху.


Скріншот цього застосування:



Файли


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*