Шаг 954 - CFileDialog

594_1.gif (1080 b)

Класс CFileDialog герметизирует общее диалоговое окно файла Windows. Общие диалоговые окна файла обеспечивают простой способ для открытия файла (File Open) и диалоговые окна File Save As (также как другие диалоговые окна выбора файла), способами непротиворечивыми со стандартами Windows.

Вы можете использовать CFileDialog как есть с конструктором, или Вы можете получать ваш собственный класс диалога из CFileDialog и записывать конструктор, чтобы соответствовать вашим потребностям. В любом случае, эти диалоговые окна будут вести себя подобно стандартным диалоговым окнам Microsoft Foundation Class, потому что они получены из класса CCommonDialog.

Используя объект CFileDialog, сначала создают объект, использующий CFileDialog конструктор. После того, как диалоговое окно было создано, Вы можете устанавливать или изменять любые значения в структуре m_ofn, чтобы инициализировать значения или состояние средств управления блока диалога. Структура m_ofn имеет тип OPENFILENAME. Для подробной информации, см. структуру OPENFILENAME в Win32 SDK документация.

После инициализации средств управления блока диалога, вызовите DoModal функцию, чтобы отобразить диалоговое окно и позволять пользователю вводить путь и файл. DoModal возвращается, выбрал ли пользователь ОК (IDOK) или кнопку CANCEL (IDCANCEL).

Если DoModal возвращает IDOK, Вы можете использовать одну из общих функций членства CFileDialog, чтобы получить информационный ввод пользователем.

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

Вы можете использовать функцию Windows CommDlgExtendedError, чтобы определить, произошла ли ошибка в течение инициализации диалогового окна и получать больше информации относительно ошибки.

Разрушение объектов CFileDialog обработано автоматически. Нет необходимости вызвать CDialog::EndDialog.

Чтобы позволять пользователю выбирать многократные файлы, установите флажок OFN_ALLOWMULTISELECT перед вызовом DoModal. Вы должны обеспечить ваш собственный буфер имен файла, чтобы разместить возвращенный список многократных имен файла. Делайте это, заменяя m_ofn.lpstrFile с указателем на буфер, который Вы распределили, после построения CFileDialog, но перед вызовом DoModal. Дополнительно, Вы должны установить m_ofn. nMaxFile с числом символов в буфере, указанном в m_ofn.lpstrFile.

CFileDialog полагается на COMMDLG.DLL файл, который поставляеться Windows версии 3.1 и позже.

Если Вы получаете новый класс из CFileDialog, Вы можете использовать карту сообщения, чтобы обработать любые сообщения. Чтобы расширять заданную по умолчанию обработку сообщения, получите класс из CWnd, добавьте карту сообщения к новому классу, и обеспечьте функции для новых сообщений. Вы не должны обеспечить функцию обработчика прерываний, чтобы настроить диалоговое окно.

Чтобы настраивать диалоговое окно, получите класс из CFileDialog, обеспечьте заказной шаблон диалога, и добавьте карту сообщения, чтобы обработать уведомительные сообщения из расширенных средств управления. Любые необработанные сообщения должны быть переданы к базовому классу.

Настройка функции обработчика прерываний не требуется.

#include <afxdlgs.h>

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 13.02.2002