Файловий менеджер своїми руками

Типові функції файлового менеджера

Для того, щоб створити папку потрібно скористатися функцією:

Один діалог на всі випадки життя

Щоб користувачеві було зручно вводити ім'я створюваної папки, і багато іншого (про це мова піде далі) я вирішив створити діалогове вікно. Але так як операцій буде 3, то довелося б створювати 3 діалогових вікна, тому що для кожної команди вони трохи відрізняються.

Я вирішив, що 3 форму це надто та вирішив обійтися однією. Зараз я розповім, як я це зробив. Для початку звичайним чином я створив форму. Помістив на неї 2 кнопки, 2 label і 1 textbox. У файлі Form1.h я додав рядок:

Типово С ++ постачає всі компоненти в класі форми специфікаторами private, тобто їх можна змінювати тільки з функція класу і функцій-друзів класу. А мені треба щоб я міг управляти компонентами на діалогової формі з головного вікна. Тому перш за все я змінив private на public. Потім я додав другий конструктор, в якому передаю рядок для заголовка форми. Ось його код.

Нічого складного просто міняємо заголовок форми на текст переданий конструктору. Тепер дійшли до самого цікавого. Як же управляти нашим «чудо-діалогом»? Для створення нашої форми потрібно написати наступний рядок:

Створюємо змінну і викликаємо, конструктор з параметром "Створюємо папку". В даному випадку ми будемо робити діалог, в якому буде запропоновано створити папки. Далі все дуже просто. Щоб змінювати текст кнопок і всього іншого потрібно звертатися до них, як ніби вони знаходяться на головній формі.

Так як форма вдає із себе діалогову, то ми повинні вказати DialogResult для кожної кнопки. По ньому ми зможемо дізнатися, яка кнопка була натиснута користувачем. Варто враховувати, що показувати таку форму потрібно не функцій Show (), а ShowDialog (). Результатом виконання якої буде DialogResult натиснутою кнопки. Зверни на це увагу.

Продовжуємо огляд функцій

Отже, ми вже навчилися створювати папки. Тепер пора б навчиться їх видаляти. Тут нам доведеться зіткнутися з прикрим обмеженням. У WinAPI є функція:

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

Вона приймає повний шлях до файлу і намагається його видалити. Якщо їй це вдалося, то вона повернеться не 0, а якщо не вдалося то 0.

Проникливі читачі моєї статті вже знають, для того щоб видалити папку потрібно для початку по ній пробігтися і видалити всі файли, і папки якщо такі є (природно рекурсивно). Про те, як шукати файли в папках, було написано в першій частині статті, яку можна прочитати в попередньому номері.

Поряд з операцією копіювання є операція переміщення файлів. Сподіваюся, що різниця між ними відома всім. Природно переміщення можна було б реалізувати шляхом копіювання і видалення, але тут програмісти з Microsoft про нас подбали і написали функцію, яка називається

Ця функція може переміщати не тільки файли, але і папки. Єдиний нюанс в тому, що папки повинні перебувати на одному логічному диску інакше нічого не вийде.

На цьому я закінчую свою розповідь про функції по роботі з файловою системою. Природно він був не повним, він цього запасу цілком вистачить для написання простенького файлового менеджера. Хочеш дізнатися більше? Читай msdn. Будуть питання, пиши мені на пошту.

Схожі статті