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


Класс 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::D oModal Отображает диалоговое окно и позволяет пользователю выбирать.
CFileDialog::EnableOpenDropDown Включает раскрывающийся список на кнопке "Открыть " или "Сохранить " в диалоговом окне.
CFileDialog::EndVisualGroup Останавливает добавление элементов в визуальную группу в диалоговом окне.
CFileDialog::GetCheckButtonState Возвращает текущее состояние кнопки флажка (флажок) в диалоговом окне.
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 Задает текущее состояние кнопки флажка (флажок) в диалоговом окне.
CFileDialog::SetControlItemState Задает текущее состояние элемента в элементе управления контейнерами, найденном в диалоговом окне.
CFileDialog::SetControlItemText Задает текст элемента управления. Например, текст, сопровождающий переключатель или элемент в меню.
CFileDialog::SetControlLabel Задает текст, связанный с элементом управления, например текст кнопки или метку поля редактирования.
CFileDialog::SetControlState Задает текущее состояние видимости и включенного элемента управления.
CFileDialog::SetControlText Задает текст для указанного элемента управления в диалоговом окне "Открыть в стиле проводника" или "Сохранить как обычно".
CFileDialog::SetDefExt Задает расширение имени файла по умолчанию для диалогового окна "Открыть в стиле проводника" или "Сохранить как обычно".
CFileDialog::SetEditBoxText Задает текущий текст в элементе управления "Поле редактирования".
CFileDialog::SetProperties Предоставляет хранилище свойств, которое определяет значения по умолчанию для сохраняемого элемента.
CFileDialog::SetSelectedControlItem Задает выбранное состояние определенного элемента в группе параметров или поле со списком, которое находится в диалоговом окне.
CFileDialog::SetTemplate Задает шаблон диалогового CFileDialog окна для объекта.
CFileDialog::StartVisualGroup Объявляет визуальную группу в диалоговом окне. Последующие вызовы любого метода add добавляют эти элементы в эту группу.
CFileDialog::UpdateOFNFromShellDialog Обновляет данные, хранящиеся в переменной-члене m_ofn , чтобы соответствовать текущему состоянию диалогового окна файла.

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

Имя Описание
CFileDialog::OnButtonClicked Вызывается при нажатии кнопки.
CFileDialog::OnCheckButtonToggled Вызывается, когда флажок установлен или снят.
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. Перед переносом проекта из более ранней версии Windows необходимо обновить все ссылки на CFileDialog элементы управления в коде.

Некоторые 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 в пакете SDK для Windows.

После инициализации элементов управления диалогового окна вызовите метод CFileDialog::D oModal , чтобы отобразить диалоговое окно, чтобы пользователь смог ввести путь и имя файла. DoModal возвращает значение, нажимающее кнопку "ОК" (IDOK) или кнопку "Отмена" (IDCANCEL). Если DoModal возвращает идентификатор IDOK, вы можете использовать одну из функций общедоступного CFileDialog члена для получения сведений, помещенных пользователем.

Примечание.

В Windows Vista или более поздней версии несколько вызовов IFileDialog::SetFileTypes вызывает ошибку. Второй вызов SetFileTypes для любого экземпляра CFileDialog вернет E_UNEXPECTED в Windows Vista или более поздней версии. Вызов SetFileTypesнекоторых CFileDialog функций метода. Например, два вызова CFileDialog::DoModal для одного экземпляра CFileDialog генерирует ASSERT.

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

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

Уничтожение CFileDialog объектов обрабатывается автоматически. Вам не нужно вызывать CDialog::EndDialog.

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

Кроме того, необходимо задать m_ofn.nMaxFile количество символов в буфере, на которое указывает m_ofn.lpstrFile. Если задать максимальное количество выбранных файлов, требуется nn * (_MAX_PATH + 1) + 1размер буфера. Первый элемент, возвращаемый в буфере, — это путь к папке, в которой были выбраны файлы. Для диалоговых окон Windows Vista или более поздних версий строки имен каталога и файла завершаются значением NULL, а после последнего имени файла — дополнительным символом 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 Vista или более поздней CFileDialogверсии нельзя использовать карты сообщений и шаблоны диалоговых окон. Вместо этого необходимо использовать com-интерфейсы для аналогичных функций.

Дополнительные сведения об использовании CFileDialogсм. в разделе "Общие классы диалогов".

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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFileDialog

Требования

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

CFileDialog::AddCheckButton

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

HRESULT AddCheckButton(
    DWORD dwIDCtl,
    const CString& strLabel,
    BOOL bChecked);

Параметры

dwIDCtl
Идентификатор добавляемой кнопки проверки.

strLabel
Имя кнопки проверки.

bChecked
Логическое значение, указывающее текущее состояние кнопки проверки. Значение TRUE при проверке; Значение FALSE в противном случае

Замечания

CFileDialog::AddComboBox

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

HRESULT AddComboBox(DWORD dwIDCtl);

Параметры

dwIDCtl
Идентификатор добавляемого поля со списком.

Замечания

CFileDialog::AddControlItem

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

HRESULT AddControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера, в который добавляется элемент.

dwIDItem
Идентификатор элемента.

strLabel
Текст элемента.

Замечания

CFileDialog::AddEditBox

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

HRESULT AddEditBox(
    DWORD dwIDCtl,
    const CString& strText);

Параметры

dwIDCtl
Идентификатор добавляемого поля редактирования.

strText
Имя поля редактирования.

Замечания

CFileDialog::AddMenu

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

HRESULT AddMenu(
    DWORD dwIDCtl,
    const CString& strLabel);

Параметры

dwIDCtl
Идентификатор добавляемого меню.

strLabel
Имя меню.

Замечания

CFileDialog::AddPlace

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

void AddPlace(
    LPCWSTR lpszFolder,
    FDAP fdap = FDAP_TOP) throw();

void AddPlace(
    IShellItem* psi,
    FDAP fdap = FDAP_TOP) throw();

Параметры

lpszFolder
Путь к папке, доступной пользователю. Это может быть только папка.

fdap
Указывает место размещения папки в списке.

пси
Указатель на IShellItem, представляющий папку, доступную пользователю. Это может быть только папка.

Замечания

CFileDialog::AddPushButton

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

HRESULT AddPushButton(
    DWORD dwIDCtl,
    const CString& strLabel);

Параметры

dwIDCtl
Идентификатор добавляемой кнопки.

strLabel
Имя кнопки.

Замечания

CFileDialog::AddRadioButtonList

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

HRESULT AddRadioButtonList(DWORD dwIDCtl);

Параметры

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

Замечания

CFileDialog::AddSeparator

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

HRESULT AddSeparator(DWORD dwIDCtl);

Параметры

dwIDCtl
Идентификатор добавляемого разделителя.

Замечания

CFileDialog::AddText

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

HRESULT AddText(
    DWORD dwIDCtl,
    const CString& strText);

Параметры

dwIDCtl
Идентификатор добавляемого текста.

strText
Текстовое имя.

Замечания

CFileDialog::ApplyOFNToShellDialog

Обновляет текущее состояние CFileDialog на основе значений, хранящихся в m_ofn структуре данных.

void ApplyOFNToShellDialog();

Замечания

В версиях Windows до Windows Vista структура данных OPENFILENAME члена постоянно синхронизирована с состоянием CFileDialogобъекта. Все изменения в переменной элемента m_ofn были немедленно отражены в состоянии диалогового окна. Кроме того, все изменения в состоянии диалогового окна немедленно обновляют m_ofn переменную-член.

В Windows Vista или более поздней версии значения в переменной-члене m_ofn и состоянии не CFileDialog гарантированы синхронизацией. Эта функция заставляет CFileDialog состояние обновляемого объекта соответствовать m_ofn структуре. Windows автоматически вызывает эту функцию во время CFileDialog::D oModal.

Дополнительные сведения об использовании CFileDialog класса в Windows Vista или более поздней версии см. в разделе CFileDialog Class.

Пример

См. пример для CFileDialog::UpdateOFNFromShellDialog.

CFileDialog::CFileDialog

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

explicit CFileDialog(
    BOOL bOpenFileDialog,
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL,
    DWORD dwSize = 0,
    BOOL bVistaStyle = TRUE);

Параметры

bOpenFileDialog
[in] Параметр, указывающий тип создаваемого диалогового окна. Задайте для него значение TRUE, чтобы создать диалоговое окно "Открыть файл". Установите для него значение FALSE, чтобы создать диалоговое окно "Сохранить файл как ".

lpszDefExt
[in] Расширение имени файла по умолчанию. Если пользователь не включает известное расширение (которое имеет связь на компьютере пользователя) в поле имени файла, расширение, указанное lpszDefExt , автоматически добавляется к имени файла. Если этот параметр имеет значение NULL, расширение не добавляется.

lpszFileName
[in] Имя исходного файла, отображаемое в поле "Имя файла". Если значение NULL, имя исходного файла не отображается.

dwFlags
[in] Сочетание одного или нескольких флагов, которые можно использовать для настройки диалогового окна. Описание этих флагов см . в структуре OPENFILENAME в пакете SDK для Windows. При изменении m_ofn.Flags элемента структуры используйте побитовый оператор OR в изменениях, чтобы сохранить поведение по умолчанию нетронутым.

lpszFilter
[in] Ряд строковых пар, определяющих фильтры, которые можно применить к файлу. При указании фильтров файлов в списке файлов будут отображаться только файлы, соответствующие критериям фильтра. Дополнительные сведения о работе с фильтрами файлов см. в разделе "Примечания".

pParentWnd
[in] Указатель на окно родительского или владельца диалогового окна файла.

dwSize
[in] Размер OPENFILENAME структуры. Это значение зависит от версии операционной системы. MFC использовал этот параметр для определения соответствующего типа диалогового окна для создания. Размер по умолчанию 0 означает, что код MFC определяет правильный размер диалогового окна для использования на основе версии операционной системы, в которой выполняется программа.

bVistaStyle
[in] Обратите внимание , что этот параметр доступен в Visual Studio 2008 и более поздних версиях и приводит к использованию диалогового окна нового стиля, только если вы работаете в Windows Vista или более поздней версии.

Параметр, указывающий стиль диалогового окна файла. Задайте для него значение TRUE, чтобы использовать новые диалоговые окна стилей Vista. В противном случае будет использоваться старый стиль диалоговых окон. Дополнительные сведения о запуске в Vista см. в разделе "Примечания".

Замечания

Диалоговое окно "Открыть файл" или "Сохранить файл как" создается в зависимости от значения bOpenFileDialog.

Указание расширения по умолчанию с помощью lpszDefExt может не привести к ожидаемому поведению, так как это редко предсказуемо, какие расширения имеют сопоставления файлов на компьютере пользователя. Если вам нужен дополнительный контроль над добавлением расширения по умолчанию, вы можете наследить собственный класс от CFileDialogи переопределить CFileDialog::OnFileNameOK метод для выполнения собственной обработки расширений.

Чтобы пользователь мог выбрать несколько файлов, задайте флаг OFN_ALLOWMULTISELECT перед вызовом DoModal. Для хранения возвращаемого списка нескольких имен файлов необходимо указать собственный буфер имени файла. Это можно сделать, заменив m_ofn.lpstrFile указатель на выделенный буфер, после создания CFileDialog, но перед вызовом DoModal. Кроме того, необходимо задать m_ofn.nMaxFile количество символов в буфере, на которое указывает m_ofn.lpstrFile. Если задать максимальное количество файлов, выбранное в n, необходимое значение буфера равно n*(_MAX_PATH + 1) + 1. Например:

#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++;
  }
}

Чтобы разрешить пользователю изменять размер диалогового окна в стиле обозревателя с помощью мыши или клавиатуры, задайте флаг OFN_ENABLESIZING. Установка этого флага необходима только в том случае, если вы предоставляете процедуру перехватчика или пользовательский шаблон. Флаг работает только с диалоговым окном в стиле обозревателя; Не удается изменить размер диалоговых окон старого стиля.

Параметр lpszFilter используется для определения типа имени файла, который должен отображаться в списке файлов. Первая строка в строковой паре описывает фильтр; Вторая строка указывает расширение имени файла для использования. В качестве разделителя можно указать несколько расширений с запятой (символ ";"). Строка заканчивается двумя символами вертикальной полосы (||), а затем символом NULL. Для этого параметра можно также использовать объект CString .

Например, Microsoft Excel позволяет пользователям открывать файлы с расширениями XLC (диаграмма) или .xls (лист), среди прочего. Фильтр для Excel можно записать следующим образом:

static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
   _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
   _T("*.xlc; *.xls|All Files (*.*)|*.*||");

Однако если вы планируете использовать эту строку для непосредственного OPENFILENAME обновления структуры, следует разделять строки с символом NULL, '\0'а не вертикальными полосами ('|').

Параметр bVistaStyle применим только при запуске в Windows Vista или более поздней версии. В более ранних версиях Windows этот параметр игнорируется. Если для bVistaStyle задано значение TRUE, при компиляции программы с помощью Visual Studio 2008 или более поздней версии будет использоваться новое диалоговое окно файла стиля Vista. В противном случае будет использоваться предыдущее диалоговое окно "Файл стиля MFC".

Шаблоны диалогов не поддерживаются в диалогах на основе bVistaStyle

Пример

См. пример для CFileDialog::D oModal.

CFileDialog::D oModal

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

virtual INT_PTR DoModal();

Возвращаемое значение

IDOK или IDCANCEL. Если идентификатор IDCANCEL возвращается, вызовите функцию Windows CommDlgExtendedError , чтобы определить, произошла ли ошибка.

IDOK и IDCANCEL — это константы, указывающие, выбран ли пользователь кнопку "ОК" или "Отмена".

Замечания

Если вы хотите инициализировать различные параметры диалогового m_ofn окна файла, задав элементы структуры, перед вызовом DoModalследует выполнить это, но после создания объекта диалогового окна.

Например, если вы хотите разрешить пользователю выбрать несколько файлов, задайте флаг OFN_ALLOWMULTISELECT перед вызовом DoModal, как показано в примере кода в этом разделе.

Когда пользователь нажимает кнопки "ОК" или "Отмена" диалогового окна или выбирает параметр "Закрыть" в меню управления диалогового окна, элемент управления возвращается в приложение. Затем можно вызвать другие функции-члены, чтобы получить параметры или сведения о входных данных пользователя в диалоговом окне.

DoModal — это переопределенная виртуальная функция из класса CDialog.

Пример

void CMyClass::OnFileOpen()
{
   // szFilters is a text string that includes two file name filters:
   // "*.my" for "MyType Files" and "*.*' for "All Files."
   TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");

   // Create an Open dialog; the default file name extension is ".my".
   CFileDialog fileDlg(TRUE, _T("my"), _T("*.my"),
      OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
   
   // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
   // returns IDOK.
   if(fileDlg.DoModal() == IDOK)
   {
      CString pathName = fileDlg.GetPathName();
   
      // Implement opening and reading file in here.

      //Change the window's title to the opened file's title.
      CString fileName = fileDlg.GetFileTitle();
   
      SetWindowText(fileName);
   }
}

CFileDialog::EnableOpenDropDown

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

HRESULT EnableOpenDropDown(DWORD dwIDCtl);

Параметры

dwIDCtl
Идентификатор раскрывающегося списка.

Замечания

CFileDialog::EndVisualGroup

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

HRESULT EndVisualGroup();

Возвращаемое значение

Возвращает S_OK в случае успешного выполнения; Значение ошибки в противном случае.

Замечания

CFileDialog::GetCheckButtonState

Извлекает текущее состояние кнопки флажка (флажок) в диалоговом окне.

HRESULT GetCheckButtonState(
    DWORD dwIDCtl,
    BOOL& bChecked);

Параметры

dwIDCtl
Идентификатор флажка.

bChecked
Состояние флажка. Значение TRUE указывает на установленную проверку; ЗНАЧЕНИЕ FALSE указывает, что флажок снят.

Замечания

CFileDialog::GetControlItemState

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

HRESULT GetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF& dwState);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера.

dwIDItem
Идентификатор элемента.

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

Замечания

CFileDialog::GetControlState

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

HRESULT GetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF& dwState);

Параметры

dwIDCtl
Идентификатор элемента управления.

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

Замечания

CFileDialog::GetEditBoxText

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

HRESULT GetEditBoxText(
    DWORD dwIDCtl,
    CString& strText);

Параметры

dwIDCtl
Идентификатор поля редактирования.

strText
Текстовое значение.

Замечания

CFileDialog::GetFileExt

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

CString GetFileExt() const;

Возвращаемое значение

Расширение имени файла.

Замечания

Например, если введенное имя файла DATA.TXT, GetFileExt возвращает значение TXT.

Если m_ofn.Flags имеется набор флагов OFN_ALLOWMULTISELECT, эта строка содержит последовательность строк, завершаемых значением NULL, причем первая строка — путь к каталогу выбранной группы файлов, а затем имена всех файлов, выбранных пользователем. Чтобы получить имена пути к файлу , используйте функции-члены GetStartPosition и GetNextPathName .

CFileDialog::GetFileName

Вызовите эту функцию, чтобы получить имя имени файла, введенного в диалоговом окне.

CString GetFileName() const;

Возвращаемое значение

Имя файла.

Замечания

Имя файла включает префикс и расширение. Например, GetFileName возвращает текст. DAT" для файла C:\FILES\TEXT.DAT.

Если m_ofn.Flags имеется набор флагов OFN_ALLOWMULTISELECT , необходимо вызвать GetStartPosition и GetNextPathName , чтобы получить имя пути к файлу.

CFileDialog::GetFileTitle

Вызовите эту функцию, чтобы получить заголовок файла, введенного в диалоговом окне.

CString GetFileTitle() const;

Возвращаемое значение

Заголовок файла.

Замечания

Заголовок файла содержит только его префикс без пути или расширения. Например, GetFileTitle возвращает "TEXT" для файла C:\FILES\TEXT.DAT.

Если m_ofn.Flags имеется набор флагов OFN_ALLOWMULTISELECT, эта строка содержит последовательность строк, завершаемых значением NULL, причем первая строка — путь к каталогу выбранной группы файлов, а затем имена всех файлов, выбранных пользователем. Поэтому используйте функции-члены GetStartPosition и GetNextPathName , чтобы получить следующее имя файла в списке.

Пример

См. пример для CFileDialog::D oModal.

CFileDialog::GetFolderPath

Вызовите эту функцию-член, чтобы получить путь к открытой папке или каталогу для диалогового окна "Открыть" или "Сохранить как обычно".

CString GetFolderPath() const;

Возвращаемое значение

Объект CString , содержащий текущую открытую папку или каталог.

Замечания

Диалоговое окно должно быть создано с помощью стиля OFN_EXPLORER; В противном случае метод завершится ошибкой с утверждением.

Этот метод можно вызывать только во время отображения диалогового окна. После закрытия диалогового окна эта функция больше не будет работать, и метод завершится сбоем с утверждением.

CFileDialog::GetIFileDialogCustomize

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

IFileDialogCustomize* GetIFileDialogCustomize();

Возвращаемое значение

Указатель на внутренний COM-объект для CFileDialogобъекта . Вы несете ответственность за освобождение этого указателя соответствующим образом.

Замечания

Используйте эту функцию только в Windows Vista или более поздней версии с объектом, для которому задано значение TRUE. Если вы используете эту функцию, если bVistaStyle имеет значение FALSE, она вернет ЗНАЧЕНИЕ NULL в режиме выпуска и вызовет утверждение в режиме отладки.

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

Пример

В этом примере извлекается внутренний COM-объект. Чтобы запустить этот пример кода, необходимо скомпилировать его в Windows Vista или более поздней версии.

// Get the interface pointer
IFileDialogCustomize *customDlgPtr = m_myFileDialogPtr->GetIFileDialogCustomize();

// Make sure that it is not null
if (customDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   customDlgPtr->Release();
}

CFileDialog::GetIFileOpenDialog

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

IFileOpenDialog* GetIFileOpenDialog();

Возвращаемое значение

Указатель на внутренний COM-объект для CFileDialogобъекта . Вы несете ответственность за освобождение этого указателя соответствующим образом.

Замечания

Используйте эту функцию только в Windows Vista или более поздней версии с объектом, для которому задано значение TRUE. Эта функция возвращает значение NULL, если CFileDialog диалоговое окно "Открыть " не является или если для bVistaStyle задано значение FALSE. В этом заключительном случае функция возвращает значение NULL только в режиме выпуска. В режиме отладки она вызовет утверждение.

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

Пример

В этом примере извлекается внутренний COM-объект. Чтобы запустить этот код, необходимо скомпилировать его в Windows Vista или более поздней версии.

// Get the interface pointer
IFileOpenDialog * openDlgPtr = m_myFileDialogPtr->GetIFileOpenDialog();

// Make sure that it is not null
if ( openDlgPtr != NULL )
{
    //
    // Perform any interface functionality here
    //

    // Release the pointer
    openDlgPtr->Release();
}

CFileDialog::GetIFileSaveDialog

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

IFileSaveDialog* GetIFileSaveDialog();

Возвращаемое значение

Указатель на внутренний COM-объект для CFileDialogобъекта . Вы несете ответственность за освобождение этого указателя соответствующим образом.

Замечания

Используйте эту функцию только в Windows Vista или более поздней версии с объектом, для которому задано значение TRUE. Эта функция возвращает значение NULL, если CFileDialog диалоговое окно "Сохранить" не задано или если для bVistaStyle задано значение FALSE. В этом заключительном случае функция возвращает значение NULL только в режиме выпуска. В режиме отладки она вызовет утверждение.

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

Пример

В этом примере извлекается внутренний COM-объект. Чтобы запустить этот пример кода, необходимо скомпилировать его в Windows Vista или более поздней версии.

// Get the interface pointer
IFileSaveDialog *saveDlgPtr = m_myFileDialogPtr->GetIFileSaveDialog();

// Make sure that it is not null
if (saveDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   saveDlgPtr->Release();
}

CFileDialog::GetNextPathName

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

CString GetNextPathName(POSITION& pos) const;

Параметры

pos
Ссылка на значение POSITION, возвращаемое предыдущим GetNextPathName вызовом или GetStartPosition вызовом функции. Значение NULL, если достигнут конец списка.

Возвращаемое значение

Полный путь к файлу.

Замечания

Путь к имени файла содержит заголовок файла и весь путь к каталогу. Например, GetNextPathName возвращается "C:\FILES\TEXT". DAT" для файла C:\FILES\TEXT.DAT. Вы можете использовать GetNextPathName в цикле итерации пересылки, если установить начальную позицию с вызовом GetStartPosition.

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

CFileDialog::GetOFN

Извлекает связанную OPENFILENAME структуру.

const OPENFILENAME& GetOFN() const;

OPENFILENAME& GetOFN();

Возвращаемое значение

Структура OPENFILENAME.

Замечания

Используйте вторую версию этой функции, чтобы инициализировать внешний вид диалогового окна "Открыть файл" или "Сохранить файл как" после его создания, но перед отображением функции-члена DoModal . Например, можно задать lpstrTitle элемент заголовка m_ofn , который должен иметь диалоговое окно.

CFileDialog::GetPathName

Вызовите эту функцию, чтобы получить полный путь к файлу, введенного в диалоговом окне.

CString GetPathName() const;

Возвращаемое значение

Полный путь к файлу.

Замечания

Путь к имени файла содержит заголовок файла и весь путь к каталогу. Например, GetPathName возвращается "C:\FILES\TEXT". DAT" для файла C:\FILES\TEXT.DAT.

Если m_ofn.Flags имеется набор флагов OFN_ALLOWMULTISELECT, эта строка содержит последовательность строк со значением NULL, а первая строка — путь к каталогу выбранной группы файлов, а затем имена всех файлов, выбранных пользователем. Поэтому используйте функции-члены GetStartPosition и GetNextPathName , чтобы получить следующее имя файла в списке.

Пример

См. пример для CFileDialog::D oModal.

CFileDialog::GetReadOnlyPref

Вызовите эту функцию, чтобы определить, установлен ли флажок "Только для чтения" в диалоговом окне "Открыть стандартный файл" Windows и "Сохранить файл как".

BOOL GetReadOnlyPref() const;

Возвращаемое значение

Ненулевая, если флажок "Только для чтения" в диалоговом окне установлен; в противном случае — 0.

Замечания

Флажок "Только для чтения" можно скрыть, задав стиль OFN_HIDEREADONLY в конструкторе CFileDialog .

Примечание.

Объекты стиля CFileDialog Windows Vista или более поздних версий не поддерживают эту функцию. Попытка использовать эту функцию в стиле CFileDialog Windows Vista или более поздней версии вызовет CNotSupportedException.

CFileDialog::GetResult

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

IShellItem* GetResult() throw();

Возвращаемое значение

Указатель на IShellItem, представляющий выбор пользователя.

Замечания

CFileDialog::GetResults

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

IShellItemArray* GetResults() throw();

Возвращаемое значение

Указатель на IShellItemArray, с помощью которого можно получить доступ к элементам, выбранным в диалоговом окне.

Замечания

CFileDialog::GetSelectedControlItem

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

HRESULT GetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD& dwIDItem);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера.

dwIDItem
Идентификатор элемента, выбранного пользователем в элементе управления.

Замечания

CFileDialog::GetStartPosition

Вызовите эту функцию-член, чтобы получить позицию первого имени пути к файлу в списке, если m_ofn.Flags установлен флаг OFN_ALLOWMULTISELECT.

POSITION GetStartPosition() const;

Возвращаемое значение

Значение POSITION, которое можно использовать для итерации; ЗНАЧЕНИЕ NULL, если список пуст.

CFileDialog::HideControl

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

void HideControl(int nID);

Параметры

nID
Идентификатор элемента управления, который нужно скрыть.

Замечания

Диалоговое окно должно быть создано с помощью стиля OFN_EXPLORER; в противном случае функция завершится ошибкой с утверждением.

CFileDialog::IsPickFoldersMode

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

BOOL IsPickFoldersMode() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если диалоговое окно находится в режиме выбора папок; в противном случае ЗНАЧЕНИЕ FALSE.

Замечания

CFileDialog::m_ofn

m_ofn — это структура типа OPENFILENAME. Данные в этой структуре представляют текущее состояние CFileDialogобъекта.

Замечания

Используйте эту структуру, чтобы инициализировать внешний вид диалогового окна "Открыть файл" или "Сохранить файл как" после создания, но перед отображением его с помощью метода DoModal . Например, можно задать элемент lpstrTitle заголовка m_ofn , который должен иметь диалоговое окно.

При использовании windows Vista или более поздней версии CFileDialogm_ofn не гарантируется всегда соответствовать состоянию диалогового окна. Он синхронизируется с диалоговым окном в более ранних версиях Windows. Дополнительные сведения об синхронизации структуры и состояния в Windows Vista или более поздней версии см. в разделе CFileDialog::CFileDialog::ApplyOFOFDialog:ApplyOFNToShellDialog.CFileDialog m_ofn

Диалоговые окна файлов стилей Windows Vista или более поздних версий не поддерживают определенные элементы и флаги файла CFileDialogстиля. В результате они не будут иметь никакого эффекта.

Ниже приведен список участников, которые не поддерживаются Windows Vista или более поздней версии:

  • lpstrCustomFilter

  • lpstrInitialDir

  • lCustData

  • lpfnHook

  • lpTemplateName

Следующие флаги не поддерживаются и поэтому не влияют на использование стиля CFileDialogWindows Vista или более поздней версии:

  • OFN_ENABLEHOOK

  • OFN_ENABLEINCLUDENOTIFY

  • OFN_ENABLETEMPLATE

  • OFN_ENABLETEMPLATEHANDLE

  • OFN_EXPLORER

  • OFN_EXTENSIONDIFFERENT

  • OFN_HIDEREADONLY

  • OFN_LONGNAMES — эффективно всегда в Windows Vista или более поздней версии

  • OFN_NOLONGNAMES — эффективное отключение в Windows Vista или более поздней версии

  • OFN_NONETWORKBUTTON — эффективно всегда в Windows Vista или более поздней версии

  • OFN_READONLY

  • OFN_SHOWHELP

Дополнительные сведения об этой структуре см . в структуре OPENFILENAME в пакете SDK для Windows.

CFileDialog::MakeProminent

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

HRESULT MakeProminent(DWORD dwIDCtl);

Параметры

dwIDCtl
Идентификатор элемента управления.

Замечания

CFileDialog::OnButtonClicked

Вызывается при нажатии кнопки.

virtual void OnButtonClicked(DWORD dwIDCtl);

Параметры

dwIDCtl
Идентификатор кнопки.

Замечания

CFileDialog::OnCheckButtonToggled

Вызывается, когда флажок установлен или снят.

virtual void OnCheckButtonToggled(
    DWORD dwIDCtl,
    BOOL bChecked);

Параметры

dwIDCtl
Идентификатор флажка.

bChecked
Установлен или снят.

Замечания

CFileDialog::OnControlActivating

Вызывается при активации элемента управления.

virtual void OnControlActivating(DWORD dwIDCtl);

Параметры

dwIDCtl
Идентификатор элемента управления.

Замечания

CFileDialog::OnFileNameChange

Переопределите этот метод, если вы хотите обработать сообщение WM_NOTIFY CDN_SELCHANGE.

virtual void OnFileNameChange();

Замечания

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

Система отправляет это сообщение только в том случае, если диалоговое окно было создано с включенным флагом OFN_EXPLORER. Дополнительные сведения об уведомлении см. в CDN_SELCHANGE. Сведения о флаге OFN_EXPLORER см . в структуре OPENFILENAME и диалоговом окне "Открыть и сохранить как".

CFileDialog::OnFileNameOK

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

virtual BOOL OnFileNameOK();

Возвращаемое значение

1, если имя файла не является допустимым именем файла; в противном случае — 0.

Замечания

Эта функция позволяет отклонять имя файла по любой причине, относяющейся к приложению. Как правило, эту функцию не нужно использовать, так как платформа предоставляет проверку имен файлов по умолчанию и отображает окно сообщения, если введено недопустимое имя файла.

Если возвращается значение 1, диалоговое окно останется отображаемым для пользователя, чтобы ввести другое имя файла. Процедура диалога закрывает диалоговое окно, если возвращается значение 0. Другие возвращаемые значения ненулевого значения в настоящее время зарезервированы и не должны использоваться.

CFileDialog::OnFolderChange

Переопределите эту функцию для обработки сообщения WM_NOTIFYCDN_FOLDERCHANGE.

virtual void OnFolderChange();

Замечания

Уведомление отправляется при открытии новой папки в диалоговом окне "Открыть" или "Сохранить как".

Уведомление отправляется только в том случае, если диалоговое окно было создано с помощью стиля OFN_EXPLORER. Дополнительные сведения об уведомлении см. в CDN_FOLDERCHANGE. Сведения о стиле OFN_EXPLORER см . в структуре OPENFILENAME и диалоговом окне "Открыть и сохранить как".

CFileDialog::OnInitDone

Переопределите эту функцию для обработки сообщения WM_NOTIFY CDN_INITDONE.

virtual void OnInitDone();

Замечания

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

Система отправляет это только в том случае, если диалоговое окно было создано с помощью стиля OFN_EXPLORER. Дополнительные сведения об уведомлении см. в CDN_INITDONE. Сведения о стиле OFN_EXPLORER см . в структуре OPENFILENAME и диалоговом окне "Открыть и сохранить как".

Примечание.

Диалоговые окна файлов стилей Windows Vista или более поздних версий не поддерживают эту функцию. При попытке использовать эту функцию в диалоговом окне файла стиля Windows Vista или более поздней версии будет возникать ошибка CNotSupportedException.

CFileDialog::OnItemSelected

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

virtual void OnItemSelected(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера.

dwIDItem
Идентификатор элемента.

Замечания

CFileDialog::OnLBSelChangedNotify

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

virtual void OnLBSelChangedNotify(
    UINT nIDBox,
    UINT iCurSel,
    UINT nCode);

Параметры

nIDBox
Идентификатор поля списка или поля со списком, в котором произошло выделение.

iCurSel
Индекс текущего выбора.

nCode
Код уведомления элемента управления. Этот параметр должен иметь одно из следующих значений:

  • CD_LBSELCHANGE Указывает iCurSel является выбранным элементом в списке с одним выделением.

  • CD_LBSELSUB Указывает, что iCurSel больше не выбран в списке с несколькими выборами.

  • CD_LBSELADD Указывает, что iCurSel выбран в списке с несколькими выборами.

  • CD_LBSELNOITEMS Указывает, что выбор не существует в списке с несколькими выборами.

Замечания

Переопределите эту функцию, чтобы обеспечить настраиваемую обработку изменений выбора в списке. Например, эту функцию можно использовать для отображения прав доступа или даты последнего изменения каждого файла, выбранного пользователем.

CFileDialog::OnShareViolation

Переопределите эту функцию, чтобы обеспечить настраиваемую обработку нарушений общего ресурса.

virtual UINT OnShareViolation(LPCTSTR lpszPathName);

Параметры

lpszPathName
Путь к файлу, на котором произошло нарушение общего ресурса.

Возвращаемое значение

Одно из следующих значений:

  • OFN_SHAREFALLTHROUGH имя файла возвращается из диалогового окна.

  • OFN_SHARENOWARN Никаких дальнейших действий не требуется предпринять.

  • OFN_SHAREWARN Пользователь получает стандартное предупреждение об этой ошибке.

Замечания

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

Если вы хотите отключить проверку нарушения общего ресурса, используйте побитовый оператор OR, чтобы объединить флаг OFN_SHAREAWARE с m_ofn.Flags.

CFileDialog::OnTypeChange

Переопределите эту функцию для обработки сообщения WM_NOTIFYCDN_TYPECHANGE.

virtual void OnTypeChange();

Замечания

Уведомление отправляется, когда пользователь выбирает новый тип файла из списка типов файлов в диалоговом окне "Открыть" или "Сохранить как".

Уведомление отправляется только в том случае, если диалоговое окно было создано с помощью стиля OFN_EXPLORER. Дополнительные сведения об уведомлении см. в CDN_TYPECHANGE. Сведения о стиле OFN_EXPLORER см . в структуре OPENFILENAME и диалоговом окне "Открыть и сохранить как".

CFileDialog::RemoveControlItem

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

HRESULT RemoveControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Параметры

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

dwIDItem
Идентификатор элемента.

Замечания

CFileDialog::SetCheckButtonState

Задает текущее состояние кнопки флажка (флажок) в диалоговом окне.

HRESULT SetCheckButtonState(
    DWORD dwIDCtl,
    BOOL bChecked);

Параметры

dwIDCtl
Идентификатор флажка.

bChecked
Состояние флажка. Значение TRUE указывает на установленную проверку; False указывает, что флажок снят.

Замечания

CFileDialog::SetControlItemState

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

HRESULT SetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF dwState);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера.

dwIDItem
Идентификатор элемента.

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

Замечания

CFileDialog::SetControlItemText

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

HRESULT SetControlItemText(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера.

dwIDItem
Идентификатор элемента.

strLabel
Текст элемента.

Замечания

CFileDialog::SetControlLabel

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

HRESULT SetControlLabel(
    DWORD dwIDCtl,
    const CString& strLabel);

Параметры

dwIDCtl
Идентификатор элемента управления.

strLabel
Имя элемента управления.

Замечания

CFileDialog::SetControlState

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

HRESULT SetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF dwState);

Параметры

dwIDCtl
Идентификатор элемента управления.

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

Замечания

CFileDialog::SetControlText

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

void SetControlText(
    int nID,
    LPCSTR lpsz);

void SetControlText(
    int nID,
    const wchar_t *lpsz);

Параметры

nID
[in] Идентификатор элемента управления, для которого нужно задать текст.

lpsz
[in] Указатель на строку, содержащую текст, заданный для элемента управления.

Замечания

Обе версии этой функции допустимы для приложений, использующих Юникод. Однако только версия с типом LPCSTR допустима для приложений, использующих ANSI.

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

CFileDialog::SetDefExt

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

void SetDefExt(LPCSTR lpsz);

Параметры

lpsz
Указатель на строку, содержащую расширение по умолчанию, используемое для объекта диалогового окна. Эта строка не должна содержать период (.).

Замечания

Диалоговое окно должно быть создано с помощью стиля OFN_EXPLORER; в противном случае функция завершится ошибкой с утверждением.

CFileDialog::SetEditBoxText

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

HRESULT SetEditBoxText(
    DWORD dwIDCtl,
    const CString& strText);

Параметры

dwIDCtl
Идентификатор поля редактирования.

strText
Текстовое значение.

Замечания

CFileDialog::SetProperties

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

BOOL SetProperties(LPCWSTR lpszPropList);

Параметры

lpszPropList
Список предварительно заданных свойств, разделенных точкой с запятой (";"). Список флагов см. в разделе "Флаги" openFILENAME.

Замечания

CFileDialog::SetSelectedControlItem

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

HRESULT SetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Параметры

dwIDCtl
Идентификатор элемента управления контейнера.

dwIDItem
Идентификатор элемента, выбранного пользователем в элементе управления.

Замечания

CFileDialog::SetTemplate

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

void SetTemplate(
    UINT nWin3ID,
    UINT nWin4ID);

void SetTemplate(
    LPCTSTR lpWin3ID,
    LPCTSTR lpWin4ID);

Параметры

nWin3ID
[in] Содержит идентификатор ресурса шаблона для объекта, отличного от обозревателя CFileDialog . Этот шаблон используется только в Windows NT 3.51 или в том случае, если стиль OFN_EXPLORER отсутствует.

nWin4ID
[in] Содержит идентификатор ресурса шаблона для объекта Explorer CFileDialog . Этот шаблон используется только в Windows NT 4.0 и более поздних версиях, Windows 95 и более поздних версиях или при наличии стиля OFN_EXPLORER.

lpWin3ID
[in] Содержит имя ресурса шаблона для объекта, отличного от обозревателя CFileDialog . Этот шаблон используется только в Windows NT 3.51 или в том случае, если стиль OFN_EXPLORER отсутствует.

lpWin4ID
[in] Содержит имя ресурса шаблона объекта Explorer CFileDialog . Этот шаблон используется только в Windows NT 4.0 и более поздних версиях, Windows 95 и более поздних версиях или при наличии стиля OFN_EXPLORER.

Замечания

Система будет использовать только один из указанных шаблонов. Система определяет, какой шаблон следует использовать на основе наличия стиля OFN_EXPLORER и операционной системы, на которой работает приложение. Указав шаблон, отличный от обозревателя и проводника, можно легко поддерживать Windows NT 3.51, Windows NT 4.0 и более поздних версий, а также Windows 95 и более поздних версий.

Примечание.

Диалоговые окна файлов стилей Windows Vista или более поздних версий не поддерживают эту функцию. При попытке использовать эту функцию в диалоговом окне файла стиля Windows Vista или более поздней версии будет возникать ошибка CNotSupportedException. Альтернативой является использование настраиваемого диалогового окна. Дополнительные сведения об использовании пользовательского CFileDialogобъекта см. в разделе IFileDialogCustomize.

CFileDialog::StartVisualGroup

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

HRESULT StartVisualGroup(
    DWORD dwIDCtl,
    const CString& strLabel);

Параметры

dwIDCtl
Идентификатор визуальной группы.

strLabel
Имя группы.

Замечания

CFileDialog::UpdateOFNFromShellDialog

Обновляет структуру m_ofn данных CFileDialog на основе текущего состояния внутреннего объекта.

void UpdateOFNFromShellDialog();

Замечания

В версиях Windows до Windows Vista структура данных OPENFILENAME члена постоянно синхронизирована с состоянием CFileDialogобъекта. Все изменения в переменной элемента m_ofn непосредственно повлияли на состояние диалогового окна. Кроме того, все изменения состояния диалогового окна немедленно обновили переменную m_ofn члена.

В Windows Vista или более поздней версии m_ofn структура данных не обновляется автоматически. Чтобы гарантировать точность данных в переменной-члене m_ofn , необходимо вызвать UpdateOFNFromShellDialog функцию перед доступом к данным. Windows автоматически вызывает эту функцию во время обработки IFileDialog::OnFileOK.

Дополнительные сведения об использовании CFileDialog класса в Windows Vista или более поздней версии см. в разделе CFileDialog Class.

Пример

В этом примере обновляется CFileDialog перед отображением. Перед обновлением переменной-члена m_ofn необходимо синхронизировать ее с текущим состоянием диалогового окна.

// Update the m_ofn variable
m_myFileDialogPtr->UpdateOFNFromShellDialog();

// Change the title
m_myFileDialogPtr->m_ofn.lpstrTitle = L"New Dialog Title";

// Apply the changes
m_myFileDialogPtr->ApplyOFNToShellDialog();

// Show the window
LRESULT result = m_myFileDialogPtr->DoModal();

См. также

Класс CCommonDialog
Диаграмма иерархии