Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Visual C++. MFC
Урок 37. Стандартный диалог для открытия/сохранения файла

На этом занятии мы с вами посмотрим, как можно использовать в ваших программах стандартные диалоги для открытия и сохранения файла. Эти диалоги, наряду с далогами для выбора цвета, для поиска и замены, для выбора шрифта являются стандартными диалогами Windows. Они уже существуют в недрах операционной системы, причем их внешний вид зависит от версии Windows (например, в одних версиях Windows их размер можно менять, а в других - нет).

Для диалогов, предназначенных для открытия и сохранения файла, предназначен один и тот же класс - CFileDialog. Сейчас мы с вами и посмотрим, как с ним можно работать.

Запустите Visual C++ и создайте новый проект типа MFC AppWizard (EXE). Для определенности задайте ему имя CFileDialog. На первом шаге мастера выберите тип проекта, основанный на диалоге. В последующих шагах мастера все оставьте без изменений, только на шаге 2 уберите галочку ActiveX Controls (они нам не нужны, так что не будем усложнять себе код).

После создания проекта перейдите на вкладку ResourceView и добавьте к нашему проекту меню с одним пунктом (добавляем меню верхнего уровня Options и его подменю FileOpen):

Меню

Имя идентификатора для меню можно оставить без изменений (IDR_MENU1).

Наше меню еще не подсоединено к форме. Для его подсоединения выберете идентификатор меню (IDR_MENU1) в combobox'е menu в окне свойств нашего диалогового окна:

Добавление меню к форме

Теперь добавьте обработчик для добавленного пункта меню FileOpen (с помощью ClassWizard'а).

Приступаем к написанию кода. В созданный обработчик добавьте следующий код:

void CCFileDialogDlg::OnOptionsFileopen()
 
 {
 
     // TODO: Add your command handler code here
 
     CFileDialog dlg(TRUE);
 
     dlg.DoModal();
 
 }

В написанном коде пояснений требует разве что конструктор. Он, как вы видите вызывается с параметром TRUE. Это означает, что будет создан стандартный диалог для открытия файлов. Если же в качестве параметра указать FALSE, то создастся стандартный диалог для сохранения файла (Save As...).

Программу можно запустить - при выборе нашего пункта меню будет показан диалог для открытия файла.

Теперь посмотрим, как можно изменять свойства диалогового окна. За это отвечает свойство m_ofn. Давайте, для примера, создадим диалоговое окно с заголовком "Открытие 123-файлов", с фильтрами для показа 123- и всех файлов и с начальной директорией c:\tmp. Кроме того, после закрытия диалогового окна мы покажем в messagebox'ах имя выбранного файла (с путем и без).

    ...
 
     CFileDialog dlg(TRUE);
 
     //Создаем фильтр
 
     dlg.m_ofn.lpstrFilter="123-файл\0*.123\0Все файлы\0*.*\0\0";
 
     //Делаем активным фильтр "Все файлы|*.*"
 
     dlg.m_ofn.nFilterIndex=2;
 
     //Задаем начальную директорию
 
     dlg.m_ofn.lpstrInitialDir="c:\\tmp";
 
     //Задаем заголовок диалогового окна
 
     dlg.m_ofn.lpstrTitle="Открытие 123-файлов";
 
     //Показывваем диалог
 
     dlg.DoModal();
 
     //Показываем имя открытого файла без пути
 
     MessageBox(dlg.m_ofn.lpstrFileTitle);
 
     //Показываем имя открытого файла с полным путем
 
     MessageBox(dlg.m_ofn.lpstrFile);
 
     ...

Назначение параметров ясно из комментариев. Обратите внимание на то, как задается фильтр. Он делится на пары строк - описание фильтра и расширения файлов, каждая такая строка заканчвается на нуль-символ (\0), в конце же этого свойства мы должны поставить два нуль-символа. Отметьте также, что нумерация для задания начального фильтра (подсвойство nFilterIndex) начинается с единицы.

После запуска программы наш стандартный диалог окно будет выглядеть приблизительно так:

Диалог для открытия файлов

Диалог для сохранения файлов работает точно также. Как уже говорилось, для его создания необходимо в конструкторе указать параметр FALSE.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS