Поделиться через


Класс CFileDialog

Инкапсулирует общее диалоговое окно, используемое для открытия файла или операций сохранения файла.

class CFileDialog : public CCommonDialog

Члены

Открытые конструкторы

Имя

Описание

CFileDialog::CFileDialog

Создает объект CFileDialog.

Открытые методы

Имя

Описание

CFileDialog::AddCheckButton

Добавляет кнопку проверка в диалоговом окне.

CFileDialog::AddComboBox

Добавляет поле со списком в диалоговое окно.

CFileDialog::AddControlItem

Добавляет элемент в контейнерный элемент управления в диалоговом окне.

CFileDialog::AddEditBox

Добавляет поле ввода " в диалоговом окне.

CFileDialog::AddMenu

Добавляет меню в диалоговое окно.

CFileDialog::AddPlace

Перегружен. Добавляет папку в список источников, доступных для пользователя, чтобы открыть или сохранить элементы.

CFileDialog::AddPushButton

Добавить кнопку к компоненту.

CFileDialog::AddRadioButtonList

Добавляет группу переключателя (также известного как переключатель) в диалоговое окно.

CFileDialog::AddSeparator

Добавляет разделитель в диалоговое окно.

CFileDialog::AddText

Добавляет содержимое текста в диалоговом окне.

CFileDialog::ApplyOFNToShellDialog

Обновляет состояние CFileDialog для поиска и флагам параметров, хранящихся в переменной члена m_ofn.

CFileDialog::DoModal

Отображает диалоговое окно и позволяет пользователю выполнить выделение.

CFileDialog::EnableOpenDropDown

Включает раскрывающегося списка на кнопке Открыть или Сохранить в диалоговом окне.

CFileDialog::EndVisualGroup

Останавливает добавление элементов в визуальном группе файлов в диалоговом окне.

CFileDialog::GetCheckButtonState

Возвращает текущее состояние кнопки проверки (checkbox) в диалоговом окне.

CFileDialog::GetControlItemState

Возвращает текущее состояние элемента в контейнерном элементе управления в диалоговом окне.

CFileDialog::GetControlState

Возвращает текущую видимость и включенные состояния данного элемента управления.

CFileDialog::GetEditBoxText

Возвращает текущий текст в элементе управления "поле ввода".

CFileDialog::GetFileExt

Возвращает расширение выделенного файла.

CFileDialog::GetFileName

Возвращает имя файла, выбранного файла.

CFileDialog::GetFileTitle

Возвращает имя выбранного файла.

CFileDialog::GetFolderPath

Возвращает путь в данный момент открытых папки или каталога, Обозреватель- стиля Открыть или общего диалогового окна Сохранить как.

CFileDialog::GetIFileDialogCustomize

Извлекает внутренний COM-объект для настраиванного объекта CFileDialog.

CFileDialog::GetIFileOpenDialog

Извлекает внутренний COM-объект для CFileDialog, который используется в качестве диалогового окна "Файл" Открыть.

CFileDialog::GetIFileSaveDialog

Извлекает внутренний COM-объект для CFileDialog, который используется в качестве диалогового окна "Файл" Сохранить.

CFileDialog::GetNextPathName

Возвращает полный путь далее выбранного файла.

CFileDialog::GetOFN

Извлекает структуру OPENFILENAME объекта CFileDialog.

CFileDialog::GetPathName

Возвращает полный путь к выбранному файлу.

CFileDialog::GetReadOnlyPref

Возвращает только для чтения состояние выбранного файла.

CFileDialog::GetResult

Возвращает вариант, который пользователь произвел в диалоговом окне.

CFileDialog::GetResults

Возвращает выбранные пользователем в диалоговом окне, позволяющее выбор нескольких элементов.

CFileDialog::GetSelectedControlItem

Возвращает указанный элемент из различных контейнерных элементов управления в диалоговом окне.

CFileDialog::GetStartPosition

Возвращает позицию первого элемента списка имен файлов.

CFileDialog::HideControl

Скрывает элемент управления в диалоговом окне Обозреватель- стиле Открыть или общего Сохранить как.

CFileDialog::IsPickFoldersMode

Определяет, является ли текущее диалоговое окно в режиме " выбор папки.

CFileDialog::MakeProminent

Задает элемент управления в диалоговом окне, чтобы оно будет стоять вне сравнению с другими добавить элементы управления.

CFileDialog::RemoveControlItem

Удаляет элемент из контейнерного элемента управления в диалоговом окне.

CFileDialog::SetCheckButtonState

Устанавливает текущее состояние кнопки проверки (checkbox) в диалоговом окне.

CFileDialog::SetControlItemState

Устанавливает текущее состояние элемента в контейнерном элементе управления в диалоговом окне.

CFileDialog::SetControlItemText

Задает текст элемента управления. Например, текста, сопровождающий переключатель или элемента в меню.

CFileDialog::SetControlLabel

Задает текст, связанный с элементом управления как текст кнопки или метка поля ввода.

CFileDialog::SetControlState

Задает текущую видимость и включенные состояния данного элемента управления.

CFileDialog::SetControlText

Задает текст для элемента управления в диалоговом окне Обозреватель- стиле Открыть или общего Сохранить как.

CFileDialog::SetDefExt

Задает расширение имени файла по умолчанию для Обозреватель- стиля Открыть или общего диалогового окна Сохранить как.

CFileDialog::SetEditBoxText

Задает текущий текст в элементе управления "поле ввода".

CFileDialog::SetProperties

Предоставляет хранилище свойств, указывающее значения по умолчанию, используемый для сохранения элемента.

CFileDialog::SetSelectedControlItem

Задает выбранное состояние заданного элемента в группе переключателя или поле со списком, найденных в диалоговом окне.

CFileDialog::SetTemplate

Задает шаблон диалогового окна для объекта CFileDialog.

CFileDialog::StartVisualGroup

Объявляет визуальные группами в диалоговом окне. Последующие вызовы к любым "добавить" метод добавить эти элементы в этой группе.

CFileDialog::UpdateOFNFromShellDialog

Обновляет данные, хранящиеся в переменной члена m_ofn, чтобы оно соответствовало текущему состоянию диалогового окна файла.

Защищенные методы

Имя

Описание

CFileDialog::OnButtonClicked

Вызываемый при нажатии кнопки " нажата.

CFileDialog::OnCheckButtonToggled

Если установить флажок " с именем unchecked.

CFileDialog::OnControlActivating

Вызываемый, когда элемент управления является активным.

CFileDialog::OnFileNameChange

Обрабатывает сообщение WM_NOTIFY CDN_SELCHANGE.

CFileDialog::OnFileNameOK

Проверяет имя файла, введенное в диалоговом окне.

CFileDialog::OnFolderChange

Обрабатывает сообщение WM_NOTIFY CDN_FOLDERCHANGE.

CFileDialog::OnInitDone

Обрабатывает сообщение WM_NOTIFY CDN_INITDONE.

CFileDialog::OnItemSelected

Если выбрать элемент с именем контейнера.

CFileDialog::OnLBSelChangedNotify

Позволяет выполнять настраиваемые действия при изменении выделения файла.

CFileDialog::OnShareViolation

Нарушение общей папки маркеров.

CFileDialog::OnTypeChange

Обрабатывает сообщение WM_NOTIFY CDN_TYPECHANGE.

Открытые члены данных

Имя

Описание

CFileDialog::m_ofn

Структура 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 см. в разделе Классы общих диалоговых окон.

Иерархия наследования

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFileDialog

Требования

заголовок: afxdlgs.h

См. также

Ссылки

Класс CCommonDialog

Диаграмма иерархии