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
);
Параметры
[in] bOpenFileDialog
Параметр, который определяет, какой тип диалогового окна, который необходимо создать.Задайте TRUE для построения диалоговое окно Открытие файла.Задайте FALSE для построения диалоговое окно Сохранение файла.[in] lpszDefExt
Суффикс для имени файла по умолчанию.Если пользователь не содержит известного расширения (он имел ассоциацию на компьютере пользователя) в поле имени файла, определенное расширение lpszDefExt автоматически добавляется к имени файла.Если этот параметр имеет значение NULL, то не требуется расширение не добавляется.[in] lpszFileName
Исходное имя файла, в котором отображается в поле имени файла.Если NULL, исходное имя файла.[in] dwFlags
Сочетание одного или нескольких флажков, с помощью которых можно настраивать диалоговое окно.Описание этих (структура, см. в разделе OPENFILENAME в Windows SDK.Если изменить элемент структуры m_ofn.Flags, используйте оператор OR a bitwise- на изменения, чтобы обеспечить реакцию на события по умолчанию неповрежденной.[in] lpszFilter
Набор пар строки, указывающие фильтры можно применяется к файлу.Если указать фильтры файлов, только файлы, соответствующие условиям фильтра отображаются в списке файлов.В разделе комментария дополнительные сведения о работе с фильтрами файлов.[in] pParentWnd
Указатель на окно родительского или владелец диалогового окна файла.[in] dwSize
Размер структуры OPENFILENAME.Это значение зависит от версии операционной системы.MFC используется этот параметр, чтобы определить оптимальный тип диалогового окна (например, создать новые диалоговые окна Windows 2000 вместо диалоговых окон NT4).Размер по умолчанию 0 означает, что код MFC определяет правильный размер диалогового окна на основе версии операционной системы, в которой программы.[in] bVistaStyle
Заметка этот параметр доступен в Visual Studio 2008 и более поздних версий и приведет к по нового стиля диалоговое окно может использоваться только при работе в Windows Vista или более поздней версии.Параметр, который задает стиль диалогового окна файла.Задайте значение TRUE для использования новых диалогов файла стиля перспективы.В противном случае старый стиль диалоговых окон будет использоваться.В разделе комментария дополнительные сведения о ходе в перспективой.
Заметки
Открытие файла И диалоговое окно Сохранение файла, в зависимости от значения 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 используется для определения типа имени файла файл должен отображаться в списке файлов.Первая строка в пары строк описывает фильтр; вторая строка указывает расширение имени файла для использования.Несколько расширений могут быть определены с помощью точки с запятой ("; символ") в качестве разделителя.Строка заканчивается 2 "|" символы, а символ 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 необходимо знаками табуляции, строки с нулем-символом, "\0" вместо вертикальных панелей ("|").
Параметр bVistaStyle применим только при работе в Windows Vista.В более ранних версиях Windows, этот параметр не учитывается.Если bVistaStyle имеет значение TRUE, если необходимо компилировать программы с помощью Visual Studio 2008 или более поздней версии, будет использоваться новый стиль Диалоговое окно открытия или сохранения файла перспективы.В противном случае будет использоваться в стиль Диалоговое окно открытия или сохранения файла MFC.Дополнительные сведения см. в разделе Класс CFileDialog.
Шаблонов диалоговых окон не поддерживаются в диалоговых окнах, основанных на bVistaStyle
Пример
См. пример в разделе CFileDialog::DoModal.
Требования
Header: afxdlgs.h