Класс CFileDialog
Инкапсулирует общее диалоговое окно, используемое для открытия файла или операций сохранения файла.
class CFileDialog : public CCommonDialog
Члены
Открытые конструкторы
Имя |
Описание |
---|---|
Создает объект CFileDialog. |
Открытые методы
Имя |
Описание |
---|---|
Добавляет кнопку проверка в диалоговом окне. |
|
Добавляет поле со списком в диалоговое окно. |
|
Добавляет элемент в контейнерный элемент управления в диалоговом окне. |
|
Добавляет поле ввода " в диалоговом окне. |
|
Добавляет меню в диалоговое окно. |
|
Перегружен.Добавляет папку в список источников, доступных для пользователя, чтобы открыть или сохранить элементы. |
|
Добавить кнопку к компоненту. |
|
Добавляет группу переключателя (также известного как переключатель) в диалоговое окно. |
|
Добавляет разделитель в диалоговое окно. |
|
Добавляет содержимое текста в диалоговом окне. |
|
Обновляет состояние CFileDialog для поиска и флагам параметров, хранящихся в переменной члена m_ofn. |
|
Отображает диалоговое окно и позволяет пользователю выполнить выделение. |
|
Включает раскрывающегося списка на кнопке Открыть или Сохранить в диалоговом окне. |
|
Останавливает добавление элементов в визуальном группе файлов в диалоговом окне. |
|
Возвращает текущее состояние кнопки проверки (checkbox) в диалоговом окне. |
|
Возвращает текущее состояние элемента в контейнерном элементе управления в диалоговом окне. |
|
Возвращает текущую видимость и включенные состояния данного элемента управления. |
|
Возвращает текущий текст в элементе управления "поле ввода". |
|
Возвращает расширение выделенного файла. |
|
Возвращает имя файла, выбранного файла. |
|
Возвращает имя выбранного файла. |
|
Возвращает путь в данный момент открытых папки или каталога, Обозреватель- стиля Открыть или общего диалогового окна Сохранить как. |
|
Извлекает внутренний COM-объект для настраиванного объекта CFileDialog. |
|
Извлекает внутренний COM-объект для CFileDialog, который используется в качестве диалогового окна "Файл" Открыть. |
|
Извлекает внутренний COM-объект для CFileDialog, который используется в качестве диалогового окна "Файл" Сохранить. |
|
Возвращает полный путь далее выбранного файла. |
|
Извлекает структуру OPENFILENAME объекта CFileDialog. |
|
Возвращает полный путь к выбранному файлу. |
|
Возвращает только для чтения состояние выбранного файла. |
|
Возвращает вариант, который пользователь произвел в диалоговом окне. |
|
Возвращает выбранные пользователем в диалоговом окне, позволяющее выбор нескольких элементов. |
|
Возвращает указанный элемент из различных контейнерных элементов управления в диалоговом окне. |
|
Возвращает позицию первого элемента списка имен файлов. |
|
Скрывает элемент управления в диалоговом окне Обозреватель- стиле Открыть или общего Сохранить как. |
|
Определяет, является ли текущее диалоговое окно в режиме " выбор папки. |
|
Задает элемент управления в диалоговом окне, чтобы оно будет стоять вне сравнению с другими добавить элементы управления. |
|
Удаляет элемент из контейнерного элемента управления в диалоговом окне. |
|
Устанавливает текущее состояние кнопки проверки (checkbox) в диалоговом окне. |
|
Устанавливает текущее состояние элемента в контейнерном элементе управления в диалоговом окне. |
|
Задает текст элемента управления.Например, текста, сопровождающий переключатель или элемента в меню. |
|
Задает текст, связанный с элементом управления как текст кнопки или метка поля ввода. |
|
Задает текущую видимость и включенные состояния данного элемента управления. |
|
Задает текст для элемента управления в диалоговом окне Обозреватель- стиле Открыть или общего Сохранить как. |
|
Задает расширение имени файла по умолчанию для Обозреватель- стиля Открыть или общего диалогового окна Сохранить как. |
|
Задает текущий текст в элементе управления "поле ввода". |
|
Предоставляет хранилище свойств, указывающее значения по умолчанию, используемый для сохранения элемента. |
|
Задает выбранное состояние заданного элемента в группе переключателя или поле со списком, найденных в диалоговом окне. |
|
Задает шаблон диалогового окна для объекта CFileDialog. |
|
Объявляет визуальные группами в диалоговом окне.Последующие вызовы к любым "добавить" метод добавить эти элементы в этой группе. |
|
Обновляет данные, хранящиеся в переменной члена m_ofn, чтобы оно соответствовало текущему состоянию диалогового окна файла. |
Защищенные методы
Имя |
Описание |
---|---|
Вызываемый при нажатии кнопки " нажата. |
|
Если установить флажок " с именем unchecked. |
|
Вызываемый, когда элемент управления является активным. |
|
Обрабатывает сообщение WM_NOTIFY CDN_SELCHANGE. |
|
Проверяет имя файла, введенное в диалоговом окне. |
|
Обрабатывает сообщение WM_NOTIFY CDN_FOLDERCHANGE. |
|
Обрабатывает сообщение WM_NOTIFY CDN_INITDONE. |
|
Если выбрать элемент с именем контейнера. |
|
Позволяет выполнять настраиваемые действия при изменении выделения файла. |
|
Нарушение общей папки маркеров. |
|
Обрабатывает сообщение WM_NOTIFY CDN_TYPECHANGE. |
Открытые члены данных
Имя |
Описание |
---|---|
Структура Windows OPENFILENAME.Предоставляет доступ к основным параметры диалогового окна файла. |
Заметки
Диалоговые окна общего файла позволяют реализовать диалоговые окна файл- выделения, например, Открыть файл и Сохранить как, способом, согласованным со стандартами Windows.
Можно использовать CFileDialog как с использованием предоставленного конструктору или можно создать собственный класс из диалогового окна конструктор CFileDialog и записи в соответствии с свои мере необходимости.В любом случае эти диалоговые окна будут вести себя как стандартные диалоговые окна MFC, поскольку они наследуются от Класс CCommonDialog.CFileDialog основан на файле COMMDLG.DLL, включенный в Windows.
И внешний вид и функциональные возможности CFileDialog с Windows Vista отличаются от предыдущих версий Windows.Значение по умолчанию CFileDialog автоматически использует новый стиль Windows Vista без изменений кода при компилирована программы и выполняются под Windows Vista.Используйте параметр bVistaStyle в конструкторе, чтобы вручную переопределить это автоматическое обновление.Исключение для автоматического обновления настраиваемых диалоговые окна.Они не будут преобразованы в новый стиль.Дополнительные сведения о конструкторе см. в подразделе CFileDialog::CFileDialog.
Примечание |
---|
Система идентификатор элемента управления отличается в Windows Vista из предыдущих версий Windows при использовании CFileDialog.Необходимо обновлять все ссылки к элементам управления CFileDialog в коде, прежде чем можно будет перенос проекта из более ранней версии Windows. |
Некоторые методы CFileDialog не поддерживаются в Windows Vista.Проверьте отдельная разделе метода дополнительные сведения о том, поддерживается ли метод.Кроме того, следующие функции не поддерживаются в Windows Vista унаследованные:
Сообщение windows для класса CFileDialog различаются в зависимости от какой операционной системы.Например, в Windows XP не поддерживает CDialog::OnCancel и CDialog::OnOK для класса CFileDialog.Однако Windows Vista их поддерживает.Дополнительные сведения о различных сообщениях, формируемых и порядок, в котором они получаются см. в разделе Образец CFileDialog: Порядок событий ведения журнала.
Чтобы использовать объект CFileDialog, сначала создайте объект с помощью конструктора CFileDialog.После того как откроется диалоговое окно, можно установить или изменить все значения в структуре CFileDialog::m_ofn для инициализации значений или состояния элементов управления диалогового окна.Структура m_ofn типа OPENFILENAME.Дополнительные сведения см. в разделе макет OPENFILENAME в Windows SDK.
После инициализации элементов управления диалогового окна, вызовите метод CFileDialog::DoModal для отображения диалогового окна таким образом, чтобы пользователь мог ввести путь и имя файла.Возвращает DoModal, щелкнул ли пользователь OK (IDOK) или кнопку отмена (IDCANCEL).Если DoModal возвращает IDOK, можно использовать один из CFileDialog открытых функции-члены для получения сведений положенное внутри пользователем.
Примечание |
---|
В Windows Vista обращения к IFileDialog::SetFileTypes несколько раз вызывают ошибку.Второй вызов SetFileTypes для любого экземпляра CFileDialog возвращает E_UNEXPECTED в Windows Vista.Определенный вызов функций SetFileTypes метода CFileDialog.Например, 2 вызова метода CFileDialog::DoModal для одного и того же экземпляра CFileDialog создают ASSERT. |
CFileDialog включает несколько защищенных членов, которые позволяют выполнять нестандартной обработки нарушений общей папки проверки имени файла и уведомления об изменении списка.Такие защищенные члены функции обратного вызова, что большинство приложений не должны использоваться, поскольку по умолчанию обработка выполняется автоматически.Записи Сообщение- сопоставления для этих функций требуется, поскольку они являются стандартными виртуальные функции.
Можно использовать функцию Windows CommDlgExtendedError чтобы определить, произошла ли ошибка во время инициализации диалогового окна и получить дополнительные сведения об ошибке.
Разрушение объектов CFileDialog изменяется автоматически.Не следует вызывать CDialog::EndDialog.
Чтобы разрешить пользователя выбирать несколько файлов, задайте пометить OFN_ALLOWMULTISELECT перед вызовом DoModal.Необходимо указать собственный буфер имени файла для размещения возвращаемый список имен нескольких файлов.Сделайте это, заменив m_ofn.lpstrFile с указателем на буфер, выбранных после построения CFileDialog, но перед вызовом DoModal.
Кроме того, необходимо установить m_ofn.nMaxFile с помощью число знаков в буфере, заданном в m_ofn.lpstrFile.Если задается максимальное число файлов, которое необходимо выделить в n, требуемый размер буфера n * (_MAX_PATH + 1) + 1.Первый элемент, возвращаемый в буфере путь к папке, где файлы были выделены.Для Windows Vista- вставка диалоговые окна стилей, каталог и строки имени файла null- завершены, с дополнительным нуль-символом после последнего имени файла.Этот формат позволяет диалоговые окна Обозреватель- стиля для возвращения длинные имена файлов, содержащие пробелы.Для прежних диалоговым окнам, каталога и имени файла строки разделяются пробелами и функция использует короткие имена файлов для имен файлов пробелами.
В следующем примере показано, как использовать буфер для получения и перечислять несколько имен файлов.
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
Чтобы изменить размер буфера в ответ на пользователя при выборе несколько имен файлов, необходимо создать новый класс, производный от CFileDialog, и переопределить метод CFileDialog::OnFileNameChange.
При наследовании новый класс, производный от CFileDialog, можно использовать сопоставление сообщений для обработки всех сообщений.Чтобы расширить обработку сообщений по умолчанию, наследуйте класс от CFileDialog добавьте сопоставление сообщения к новому классу и предоставляет функции-члены для новых сообщений.Не следует предоставить функцию обработчика настраивать диалоговое окно.
Настраивать диалоговое окно создать класс, производный от CFileDialog, предоставить шаблон настраиваемого диалогового окна, и добавить сопоставление сообщений для обработки сообщений уведомлений от расширенных элементов управления.Передача всех необработанных сообщений к базовому классу.Не следует настраивать функцию обработчика.
При использовании стиля Windows VistaCFileDialog, нельзя использовать сопоставления сообщений и шаблонов диалоговых окон.Вместо этого следует использовать интерфейсы COM для подобной функциональности.
Дополнительные сведения об использовании CFileDialog см. в разделе Общие классы диалоговых окон.
Иерархия наследования
CFileDialog
Требования
заголовок: afxdlgs.h