CFileDialog::CFileDialog
Llame a esta función para construir un cuadro de diálogo de archivos estándar de 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
);
Parámetros
[in] bOpenFileDialog
El parámetro que especifica el tipo de cuadro de diálogo para crear. Establézcalo en TRUE para construir un cuadro de diálogo Abrir archivo. Establézcala en FALSE para construir un cuadro de diálogo Guarde el archivo como.[in] lpszDefExt
Extensión predeterminada de nombre de archivo. Si el usuario no incluye una extensión conocida (una que tiene una asociación en el equipo del usuario) en el cuadro de nombre de archivo, la extensión especificada por lpszDefExt automáticamente se anexa al nombre de archivo. Si este parámetro es NULL, no se agrega ninguna extensión.[in] lpszFileName
El nombre de archivo inicial que aparece en el cuadro de nombre de archivo. Si aparece NULL, ningún nombre de archivo inicial.[in] dwFlags
Una combinación de uno o más marcadores que puede utilizar para personalizar el cuadro de diálogo. Para obtener una descripción de estos marcadores, vea la estructura de OPENFILENAME en Windows SDK. Si modifica el miembro de estructura de m_ofn.Flags, use un bit a bit- EL operador OR en los cambios para mantener el comportamiento predeterminado intacto.[in] lpszFilter
Una serie de pares de cadena que especifican los filtros se pueden aplicar al archivo. Si especifica los filtros de archivo, solo los archivos que coinciden con los criterios de filtro aparecerán en la lista de archivos. Vea la sección comentarios para obtener más información sobre cómo trabajar con los filtros de archivo.[in] pParentWnd
Un puntero a la ventana del elemento primario o el propietario del cuadro de diálogo de archivos.[in] dwSize
El tamaño de la estructura de OPENFILENAME. Este valor depende de la versión del sistema operativo. MFC utiliza este parámetro para determinar la clase correspondiente del cuadro de diálogo para crear (por ejemplo, nuevos cuadros de diálogo de Windows 2000 en lugar de los cuadros de diálogo NT4). El tamaño predeterminado de 0 significa que el código MFC determinará el tamaño correcto del cuadro de diálogo al utilizar basándose en la versión del sistema operativo en el que se ejecuta el programa.[in] bVistaStyle
El parámetro de Nota De está disponible en Visual Studio 2008 y versiones posteriores y se provocará el diálogo de nuevo- estilo que se utilizará únicamente si se está ejecutando en Windows Vista o posterior.El parámetro que especifica el estilo del cuadro de diálogo de archivos. Establézcalo en TRUE para usar los nuevos cuadros de diálogo de archivos de estilo de Vista. Si no, el estilo anterior de cuadros de diálogo se utilizará. Vea la sección comentarios para obtener más información sobre la ejecución en Vista.
Comentarios
Abrir archivo o el cuadro de diálogo Guarde el archivo como se construye, dependiendo del valor de bOpenFileDialog.
Especificar una extensión predeterminada mediante lpszDefExt no pueden generar el comportamiento que espera, porque es raramente confiable qué extensiones tienen asociaciones de archivos en el equipo del usuario. Si necesita más control sobre anexar de una extensión predeterminada, puede derivar dispone de la clase de CFileDialog, y reemplace el método de CFileDialog::OnFileNameOK para realizar dispone de control de la extensión.
Para permitir al usuario a varios archivos de selección, establezca el marcador de OFN_ALLOWMULTISELECT antes de llamar a DoModal. Debe proporcionar dispone del búfer de nombre de archivo para almacenar la lista devuelta de nombres de varios archivos. Haga esto reemplazando m_ofn.lpstrFile con un puntero a un búfer que ha asignado, después de crear CFileDialog, pero antes de que se llama a DoModal. Además, debe establecer m_ofn.nMaxFile con el número de caracteres del búfer indicada por m_ofn.lpstrFile. Si establece el número máximo de archivos que se seleccionen en n, el tamaño de búfer necesario es n* (_MAX_PATH + 1) + 1. Por ejemplo:
#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++;
}
}
Para permitir al usuario para cambiar el tamaño de un cuadro de diálogo de Explorador- estilo con el mouse o el teclado, establezca el marcador de OFN_ENABLESIZING. Establecer este marcador solo es necesario si proporciona un procedimiento de enlace o una plantilla de personalizadas. El mensaje solo funciona con un cuadro de diálogo de Explorador- estilo; los cuadros de diálogo antiguos no pueden cambiar su tamaño.
El parámetro de lpszFilter se utiliza para determinar el tipo de nombre de archivo que un archivo debe tener para mostrar en la lista de archivos. La primera cadena de los pares de la cadena describe el filtro; la segunda cadena indica la extensión de nombre de archivo al uso. Varias extensiones se pueden especificar utilizando un punto y coma (“; ” carácter) como delimitador. La cadena finaliza con dos “|” caracteres, seguidos por un carácter de NULL. También puede utilizar un objeto de CString para este parámetro.
Por ejemplo, Microsoft Excel permite a los usuarios abrir los archivos que tienen extensiones .xlc (gráfico) o .xls (hoja de cálculo), entre otros. El filtro para Excel se puede escribir como:
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
Sin embargo, si piensa utilizar esta cadena para actualizar directamente la estructura de OPENFILENAME, debe delimitar cadenas con el carácter null, “\ 0 ", en lugar de las barras verticales (“|").
El parámetro de bVistaStyle solo es aplicable al ejecutarse en Windows Vista. En versiones anteriores de Windows, se omite este parámetro. Si bVistaStyle se establece en TRUE, cuando se compila un programa con Visual Studio 2008 o posterior, el nuevo estilo Cuadro de diálogo de archivo de Vista se utilizará. Si no, el estilo anterior Cuadro de diálogo de archivo de MFC se utilizará. Para obtener más información, consulte CFileDialog Class.
Las plantillas del diálogo no se admiten en los cuadros de diálogo basados en bVistaStyle
Ejemplo
Vea el ejemplo para CFileDialog::DoModal.
Requisitos
Header: afxdlgs.h