На этом шаге мы рассмотрим использование стандартных окон диалога.
Рассмотрим применение стандартных диалоговых окон Windows путем создания экземпляра MFC-класса
CFileDialog. С помощью команды Import выполняется поиск и открытие текстового файла для
импорта в приложение STUpload. Напишем обработчик команды Import, который вначале будет
только отображать стандартное диалоговое окно, предназначенное для открытия файлов с расширением *.dat.
Поскольку задача функции-обработчика состоит в том, чтобы загружать данные приложения, то создадим функцию
как метод объекта CSTUploadDoc документа приложения.
- Создание функции-обработчика команды Import.
- Нажмите CTRL+W, чтобы вызвать ClassWizard.
- В списке Class Name выберите CSTUploadDoc.
- В списке Object IDs щелкните ID_DATA_IMPORT.
- В списке Messages выберите COMMAND.
- Щелкните Add Function, а затем - ОК, чтобы подтвердить имя функции OnDataImport.
Рис.1. Создание функции-обработчика - Реализация функции OnDataImport().
- Щелкните Edit Code, чтобы отредактировать код функции.
- Вставьте следующий код:
// String to customize File Dialog CString strFilter = "Data Files (*.dat)|*.dat|All Files (*.*)|*.*||"; CFileDialog aFileDialog( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter); int nID = aFileDialog.DoModal();
Рис.2. Редактирование функции OnDataImport()
Этот код создает экземпляр MFC-класса CFileDialog. Передаваемая конструктору строка фильтра
определяет, что стандартное диалоговое окно открытия файлов создаст фильтр для отображения только файлов с
расширением *.dat, хотя пользователь вправе выбрать и фильтр *.* ("All files" - "все файлы").
Диалоговое окно активизируется вызовом метода CDialog::DoModal() базового класса.
Теперь Вы можете собрать и запустить приложение STUpload. Проверьте работу меню, появление подсказок
в строке состояния и всплывающих подсказок. Выберите пункт Import в меню Data, чтобы убедиться,
что стандартное диалоговое окно отображается на экране, как ожидалось. На этом этапе мы не можем отобразить
созданные только что диалоговые окна. Для них уже есть шаблоны и классы, но код не создает экземпляры этих классов.
Эту работу мы выполним позднее.
Текст измененного приложения можно взять здесь (58,1 Кб).
Со следующего шага мы начнем рассматривать реализацию функций приложения.