CFileDialog (clase)
Encapsula el cuadro de diálogo común que se usa para las operaciones de apertura o guardado de archivos.
Sintaxis
class CFileDialog : public CCommonDialog
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CFileDialog::CFileDialog | Construye un objeto CFileDialog . |
Métodos públicos
Nombre | Descripción |
---|---|
CFileDialog::AddCheckButton | Agrega un botón de comprobación al cuadro de diálogo. |
CFileDialog::AddComboBox | Agrega un cuadro combinado al cuadro de diálogo. |
CFileDialog::AddControlItem | Agrega un elemento a un control contenedor en el cuadro de diálogo. |
CFileDialog::AddEditBox | Agrega un cuadro de edición al cuadro de diálogo. |
CFileDialog::AddMenu | Agrega un menú al cuadro de diálogo. |
CFileDialog::AddPlace | Con sobrecarga. Agrega una carpeta a la lista de lugares disponibles en los que el usuario puede abrir o guardar elementos. |
CFileDialog::AddPushButton | Agrega un botón al cuadro de diálogo. |
CFileDialog::AddRadioButtonList | Agrega un grupo de botones de opción (también conocido como botón de radio) al cuadro de diálogo. |
CFileDialog::AddSeparator | Agrega un separador al cuadro de diálogo. |
CFileDialog::AddText | Agrega contenido de texto al cuadro de diálogo. |
CFileDialog::ApplyOFNToShellDialog | Actualiza el estado del elemento CFileDialog para que coincida con los parámetros y las marcas almacenados en la variable de miembro m_ofn . |
CFileDialog::DoModal | Muestra el cuadro de diálogo y permite que el usuario realice una selección. |
CFileDialog::EnableOpenDropDown | Habilita una lista desplegable en el botón Abrir o Guardar del cuadro de diálogo. |
CFileDialog::EndVisualGroup | Detiene la adición de elementos a un grupo de objetos visuales del cuadro de diálogo. |
CFileDialog::GetCheckButtonState | Obtiene el estado actual de un botón de comprobación (casilla) del cuadro de diálogo. |
CFileDialog::GetControlItemState | Obtiene el estado actual de un elemento de un control contenedor que se encuentra en el cuadro de diálogo. |
CFileDialog::GetControlState | Obtiene la visibilidad actual y los estados habilitados de un control determinado. |
CFileDialog::GetEditBoxText | Obtiene el texto actual de un control de cuadro de edición. |
CFileDialog::GetFileExt | Devuelve la extensión del archivo seleccionado. |
CFileDialog::GetFileName | Devuelve el nombre de archivo del archivo seleccionado. |
CFileDialog::GetFileTitle | Devuelve el título del archivo seleccionado. |
CFileDialog::GetFolderPath | Recupera la ruta de acceso de la carpeta o el directorio abiertos actualmente para un cuadro de diálogo común de estilo explorador Abrir o Guardar como. |
CFileDialog::GetIFileDialogCustomize | Recupera el objeto COM interno de un objeto CFileDialog personalizado. |
CFileDialog::GetIFileOpenDialog | Recupera el objeto COM interno de un objeto CFileDialog que se usa como cuadro de diálogo Abrir archivo. |
CFileDialog::GetIFileSaveDialog | Recupera el objeto COM interno de un objeto CFileDialog que se usa como cuadro de diálogo Guardar archivo. |
CFileDialog::GetNextPathName | Devuelve la ruta de acceso completa del siguiente archivo seleccionado. |
CFileDialog::GetOFN | Recupera la estructura OPENFILENAME del objeto CFileDialog . |
CFileDialog::GetPathName | Devuelve la ruta de acceso completa del archivo seleccionado. |
CFileDialog::GetReadOnlyPref | Devuelve el estado de solo lectura del archivo seleccionado. |
CFileDialog::GetResult | Obtiene la opción que el usuario seleccionó en el cuadro de diálogo. |
CFileDialog::GetResults | Obtiene las opciones del usuario en un cuadro de diálogo que permite la selección múltiple. |
CFileDialog::GetSelectedControlItem | Obtiene un elemento determinado a partir de los controles de contenedor especificados en el cuadro de diálogo. |
CFileDialog::GetStartPosition | Devuelve la posición del primer elemento de la lista de nombres de archivo. |
CFileDialog::HideControl | Oculta el control especificado en un cuadro de diálogo común de estilo explorador Abrir o Guardar como. |
CFileDialog::IsPickFoldersMode | Determina si el cuadro de diálogo actual está en modo de selector de carpetas. |
CFileDialog::MakeProminent | Coloca un control en el cuadro de diálogo para que se muestre destacado en comparación con otros controles agregados. |
CFileDialog::RemoveControlItem | Quita un elemento de un control contenedor del cuadro de diálogo. |
CFileDialog::SetCheckButtonState | Establece el estado actual de un botón de comprobación (casilla) del cuadro de diálogo. |
CFileDialog::SetControlItemState | Establece el estado actual de un elemento de un control contenedor que se encuentra en el cuadro de diálogo. |
CFileDialog::SetControlItemText | Establece el texto de un elemento de control. Por ejemplo, el texto que acompaña a un botón de radio o a un elemento de un menú. |
CFileDialog::SetControlLabel | Establece el texto asociado a un control, como el texto de un botón o una etiqueta de cuadro de edición. |
CFileDialog::SetControlState | Establece la visibilidad actual y los estados habilitados de un control determinado. |
CFileDialog::SetControlText | Establece el texto del control especificado en un cuadro de diálogo común de estilo explorador Abrir o Guardar como. |
CFileDialog::SetDefExt | Establece la extensión de nombre de archivo predeterminada de un cuadro de diálogo común de estilo explorador Abrir o Guardar como. |
CFileDialog::SetEditBoxText | Establece el texto actual de un control de cuadro de edición. |
CFileDialog::SetProperties | Proporciona un almacén de propiedades que define los valores predeterminados que se van a usar para el elemento que se está guardando. |
CFileDialog::SetSelectedControlItem | Establece el estado seleccionado de un elemento determinado de un grupo de botones de opción o un cuadro combinado que se encuentran en el cuadro de diálogo. |
CFileDialog::SetTemplate | Establece la plantilla de cuadro de diálogo del objeto CFileDialog . |
CFileDialog::StartVisualGroup | Declara un grupo de objetos visuales en el cuadro de diálogo. Las llamadas posteriores a cualquier método "add" agregan esos elementos a este grupo. |
CFileDialog::UpdateOFNFromShellDialog | Actualiza los datos almacenados en la variable de miembro m_ofn para que coincidan con el estado actual del cuadro de diálogo de archivo. |
Métodos protegidos
Nombre | Descripción |
---|---|
CFileDialog::OnButtonClicked | Se llama cuando se hace clic en el botón. |
CFileDialog::OnCheckButtonToggled | Se llama cuando la casilla se activa o se desactiva. |
CFileDialog::OnControlActivating | Se llama cuando el control está activo. |
CFileDialog::OnFileNameChange | Controla el mensaje WM_NOTIFY CDN_SELCHANGE. |
CFileDialog::OnFileNameOK | Valida el nombre de archivo especificado en el cuadro de diálogo. |
CFileDialog::OnFolderChange | Controla el mensaje WM_NOTIFY CDN_FOLDERCHANGE. |
CFileDialog::OnInitDone | Controla el mensaje WM_NOTIFY CDN_INITDONE. |
CFileDialog::OnItemSelected | Se llama cuando se selecciona el elemento contenedor. |
CFileDialog::OnLBSelChangedNotify | Permite realizar acciones personalizadas cuando cambia la selección de archivos. |
CFileDialog::OnShareViolation | Controla las infracciones de recurso compartido. |
CFileDialog::OnTypeChange | Controla el mensaje WM_NOTIFY CDN_TYPECHANGE. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CFileDialog::m_ofn | La estructura de Windows OPENFILENAME . Proporciona acceso a los parámetros básicos del cuadro de diálogo de archivo. |
Comentarios
Los cuadros de diálogo de archivo comunes permiten implementar cuadros de diálogo de selección de archivos, como, por ejemplo, Abrir archivo y Guardar como, de forma coherente con los estándares de Windows.
Puede usar CFileDialog
tal y como está con el constructor proporcionado, o bien puede derivar su propia clase de cuadro de diálogo de CFileDialog
y escribir un constructor para satisfacer sus necesidades. En cualquier caso, estos cuadros de diálogo se comportarán como cuadros de diálogo MFC estándar porque se derivan de la clase CCommonDialog. CFileDialog
se basa en el archivo COMMDLG.DLL que se incluye en Windows.
Tanto la apariencia como la funcionalidad de CFileDialog
con Windows Vista o versiones posteriores difieren con respecto a las versiones anteriores de Windows. El valor CFileDialog
predeterminado usa automáticamente el nuevo estilo de Windows Vista o versiones posteriores sin cambios de código si un programa se compila y se ejecuta en Windows Vista o versiones posteriores. Use el parámetro bVistaStyle del constructor para invalidar manualmente esta actualización automática. La excepción a la actualización automática son los cuadros de diálogo personalizados, que no se convertirán al estilo nuevo. Para obtener más información sobre el constructor, consulte CFileDialog::CFileDialog.
Nota:
El sistema de identificadores de control difiere en Windows Vista o versiones posteriores con respecto a las versiones anteriores de Windows cuando se usa un elemento CFileDialog
. Debe actualizar todas las referencias a controles CFileDialog
en el código para poder portar el proyecto desde una versión anterior de Windows.
Algunos métodos CFileDialog
no se admiten en Windows Vista o versiones posteriores. Compruebe el tema del método individual para obtener información sobre si se admite el método. Además, las siguientes funciones heredadas no se admiten en Windows Vista o versiones posteriores:
Los mensajes de Windows para la clase CFileDialog
varían en función del sistema operativo que use. Por ejemplo, Windows XP no admite CDialog::OnCancel y CDialog::OnOK para la clase CFileDialog
. Sin embargo, Windows Vista y los sistemas operativos posteriores sí los admiten. Para obtener más información sobre los distintos mensajes que se generan y el orden en que se reciben, consulte Ejemplo de CFileDialog: orden de los eventos de registro.
Para usar un objeto CFileDialog
, cree primero el objeto mediante el constructor CFileDialog
. Una vez construido el cuadro de diálogo, puede establecer o modificar los valores de la estructura CFileDialog::m_ofn para inicializar los valores o estados de los controles de cuadro de diálogo. La estructura m_ofn
es de tipo OPENFILENAME
. Para obtener más información, consulte la estructura OPENFILENAME en Windows SDK.
Después de inicializar los controles de cuadro de diálogo, llame al método CFileDialog::DoModal para mostrar el cuadro de diálogo de modo que el usuario pueda escribir la ruta de acceso y el nombre de archivo. DoModal
devuelve si el usuario hizo clic en el botón Aceptar (IDOK) o en el botón Cancelar (IDCANCEL). Si DoModal
devuelve IDOK, puede usar una de las funciones de miembro públicas CFileDialog
para recuperar la información especificada por el usuario.
Nota:
En Windows Vista o versiones posteriores, la realización de varias llamadas a IFileDialog::SetFileTypes produce un error. La segunda llamada a SetFileTypes
para cualquier instancia de un objeto CFileDialog
devolverá E_UNEXPECTED en Windows Vista o versiones posteriores. Algunas funciones del método CFileDialog
llaman a SetFileTypes
. Por ejemplo, dos llamadas a CFileDialog::DoModal
para la misma instancia de un objeto CFileDialog
generan ASSERT.
CFileDialog
incluye varios miembros protegidos que permiten controlar de forma personalizada las infracciones de recursos compartidos, la validación de nombres de archivo y la notificación de cambios de cuadro de lista. Estos miembros protegidos son funciones de devolución de llamada que la mayoría de las aplicaciones no tienen que usar porque el control predeterminado se realiza automáticamente. Las entradas de asignación de mensajes para estas funciones no son necesarias porque son funciones virtuales estándar.
Puede usar la función CommDlgExtendedError de Windows para determinar si se produjo un error durante la inicialización del cuadro de diálogo y obtener más información sobre el error.
La destrucción de objetos CFileDialog
se controla automáticamente. No es necesario llamar a CDialog::EndDialog.
Para permitir que el usuario seleccione varios archivos, establezca la marca OFN_ALLOWMULTISELECT antes de llamar a DoModal
. Debe proporcionar su propio búfer de nombre de archivo para dar cabida a la lista devuelta de varios nombres de archivo. Para ello, reemplace m_ofn.lpstrFile
por un puntero a un búfer que haya asignado, después de construir CFileDialog
pero antes de llamar a DoModal
.
Además, debe establecer m_ofn.nMaxFile
utilizando el número de caracteres del búfer al que apunta m_ofn.lpstrFile
. Si establece el número máximo de archivos que se seleccionarán en n
, el tamaño de búfer necesario es n * (_MAX_PATH + 1) + 1
. El primer elemento devuelto en el búfer es la ruta de acceso a la carpeta donde se seleccionaron los archivos. Para cuadros de diálogo de estilo Windows Vista o posterior, las cadenas de nombre de archivo y directorio terminan en null, con un carácter nulo adicional después del último nombre de archivo. Este formato permite que los cuadros de diálogo de estilo explorador devuelvan nombres de archivo largos que incluyan espacios. Para los cuadros de diálogo de estilo antiguo, las cadenas de nombre de archivo y directorio están separadas por espacios y la función usa nombres de archivo cortos para los nombres de archivo con espacios.
En el ejemplo siguiente se muestra cómo usar un búfer para recuperar y enumerar varios nombres de archivo.
#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 cambiar el tamaño de búfer en respuesta al usuario que selecciona varios nombres de archivo, debe derivar una clase nueva de CFileDialog
e invalidar el método CFileDialog::OnFileNameChange.
Si deriva una clase nueva de CFileDialog
, puede usar un mapa de mensajes para controlar los mensajes. Para ampliar el control de mensajes predeterminado, derive una clase de CFileDialog
, agregue un mapa de mensajes a la clase nueva y proporcione funciones de miembro para los nuevos mensajes. No es necesario proporcionar una función de enlace para personalizar el cuadro de diálogo.
Para personalizar el cuadro de diálogo, derive una clase de CFileDialog
, proporcione una plantilla de cuadro de diálogo personalizado y agregue un mapa de mensajes para procesar los mensajes de notificación de los controles ampliados. Pase los mensajes no procesados a la clase base. No es necesario personalizar la función de enlace.
Al usar el estilo Windows Vista o posterior de CFileDialog
, no se pueden usar mapas de mensajes ni plantillas de cuadro de diálogo. En su lugar, debe usar las interfaces COM para una funcionalidad similar.
Para obtener más información sobre cómo usar CFileDialog
, consulte Clases de cuadros de diálogo comunes.
Jerarquía de herencia
CFileDialog
Requisitos
Encabezado: afxdlgs.h
CFileDialog::AddCheckButton
Agrega un botón de comprobación al cuadro de diálogo.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Parámetros
dwIDCtl
Identificador del botón de comprobación que se va a agregar.
strLabel
Nombre del botón de comprobación.
bChecked
Valor booleano que indica el estado actual del botón de comprobación. TRUE si está activado; en caso contrario, FALSE.
Comentarios
CFileDialog::AddComboBox
Agrega un cuadro combinado al cuadro de diálogo.
HRESULT AddComboBox(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador del cuadro combinado que se va a agregar.
Comentarios
CFileDialog::AddControlItem
Agrega un elemento a un control contenedor en el cuadro de diálogo.
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parámetros
dwIDCtl
Identificador del control contenedor al que se va a agregar el elemento.
dwIDItem
Identificador del elemento.
strLabel
Texto del elemento.
Comentarios
CFileDialog::AddEditBox
Agrega un cuadro de edición al cuadro de diálogo.
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
Parámetros
dwIDCtl
Identificador del cuadro de edición que se va a agregar.
strText
Nombre del cuadro de edición.
Comentarios
CFileDialog::AddMenu
Agrega un menú al cuadro de diálogo.
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
Parámetros
dwIDCtl
Identificador del menú que se va a agregar.
strLabel
Nombre del menú.
Comentarios
CFileDialog::AddPlace
Agrega una carpeta a la lista de lugares disponibles en los que el usuario puede abrir o guardar elementos.
void AddPlace(
LPCWSTR lpszFolder,
FDAP fdap = FDAP_TOP) throw();
void AddPlace(
IShellItem* psi,
FDAP fdap = FDAP_TOP) throw();
Parámetros
lpszFolder
Ruta de acceso a la carpeta que se va a establecer como disponible para el usuario. Solo puede ser una carpeta.
fdap
Especifica dónde se coloca la carpeta en la lista.
Psi
Puntero a un IShellItem que representa la carpeta que se va a establecer como disponible para el usuario. Solo puede ser una carpeta.
Comentarios
CFileDialog::AddPushButton
Agrega un botón al cuadro de diálogo.
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
Parámetros
dwIDCtl
Identificador del botón que se va a agregar.
strLabel
Nombre del botón.
Comentarios
CFileDialog::AddRadioButtonList
Agrega un grupo de botones de opción (también conocido como botón de radio) al cuadro de diálogo.
HRESULT AddRadioButtonList(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador del grupo de botones de opción que se va a agregar.
Comentarios
CFileDialog::AddSeparator
Agrega un separador al cuadro de diálogo.
HRESULT AddSeparator(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador del separador que se va a agregar.
Comentarios
CFileDialog::AddText
Agrega texto al cuadro de diálogo.
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
Parámetros
dwIDCtl
Identificador del texto que se va a agregar.
strText
Nombre del texto.
Comentarios
CFileDialog::ApplyOFNToShellDialog
Actualiza el estado actual de CFileDialog en función de los valores almacenados en la estructura de datos m_ofn
.
void ApplyOFNToShellDialog();
Comentarios
En versiones de Windows anteriores a Windows Vista, la estructura de datos miembro OPENFILENAME se sincronizaba continuamente con el estado de CFileDialog
. Los cambios realizados en la variable de miembro m_ofn se reflejaban inmediatamente en el estado del cuadro de diálogo. Además, cualquier cambio en el estado del cuadro de diálogo actualizaba inmediatamente la variable de miembro m_ofn
.
En Windows Vista o versiones posteriores, no se garantiza la sincronización de los valores de la variable de miembro m_ofn
y el estado de CFileDialog
. Esta función fuerza la actualización del estado de CFileDialog
para que coincida con la estructura m_ofn
. Windows llama a esta función automáticamente durante CFileDialog::DoModal.
Para obtener más información sobre cómo usar la clase CFileDialog
en Windows Vista o versiones posteriores, consulte Clase CFileDialog.
Ejemplo
Consulte el ejemplo de CFileDialog::UpdateOFNFromShellDialog.
CFileDialog::CFileDialog
Llame a esta función para construir un cuadro de diálogo de archivo 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
bOpenFileDialog
[in] Parámetro que especifica el tipo de cuadro de diálogo que se va a crear. Establézcalo en TRUE para construir un cuadro de diálogo Abrir archivo. Establézcalo en FALSE para construir un cuadro de diálogo Guardar archivo como.
lpszDefExt
[in] Extensión de nombre de archivo predeterminada. Si el usuario no incluye una extensión conocida (una que tiene una asociación en el equipo del usuario) en el cuadro Nombre de archivo, la extensión especificada por lpszDefExt se anexa automáticamente al nombre de archivo. Si este parámetro es null, no se anexa ninguna extensión.
lpszFileName
[in] Nombre de archivo inicial que aparece en el cuadro Nombre de archivo. Si es null, no aparece ningún nombre de archivo inicial.
dwFlags
[in] Combinación de una o varias marcas que puede usar para personalizar el cuadro de diálogo. Para obtener una descripción de estas marcas, consulte la estructura OPENFILENAME en Windows SDK. Si modifica el miembro de estructura m_ofn.Flags
, use un operador bit a bit OR en los cambios que realice para que el comportamiento predeterminado siga intacto.
lpszFilter
[in] Serie de pares de cadenas que especifican filtros que puede aplicar al archivo. Si especifica filtros de archivo, solo aparecerán en la lista de archivos los archivos que coincidan con los criterios de filtro. Consulte la sección Comentarios para obtener más información sobre cómo trabajar con filtros de archivo.
pParentWnd
[in] Puntero a la ventana primaria o propietaria del cuadro de diálogo de archivo.
dwSize
[in] Tamaño de la estructura OPENFILENAME
. Este valor depende de la versión del sistema operativo. MFC usó este parámetro para determinar el tipo adecuado de cuadro de diálogo que se va a crear. El tamaño predeterminado de 0 significa que el código de MFC determinará el tamaño correcto del cuadro de diálogo que se va a usar en función de la versión del sistema operativo en la que se ejecuta el programa.
bVistaStyle
[in] Nota Este parámetro está disponible en Visual Studio 2008 y versiones posteriores y hace que el cuadro de diálogo de estilo nuevo solo se utilice si se ejecuta en Windows Vista o versiones posteriores.
Parámetro que especifica el estilo del cuadro de diálogo de archivo. Establézcalo en TRUE para usar los cuadros de diálogo de archivo de estilo Vista nuevo. De lo contrario, se usará el estilo anterior de los cuadros de diálogo. Consulte la sección Comentarios para obtener más información sobre la ejecución en Vista.
Comentarios
Se construye un cuadro de diálogo Abrir archivo o Guardar archivo como, en función del valor de bOpenFileDialog.
Es posible que especificar una extensión predeterminada mediante lpszDefExt no genere el comportamiento esperado, ya que rara vez es predecible qué extensiones tienen asociaciones de archivos en el equipo del usuario. Si necesita más control sobre la anexión de una extensión predeterminada, puede derivar su propia clase de CFileDialog
e invalidar el método CFileDialog::OnFileNameOK
para realizar su propio control de extensiones.
Para permitir que el usuario seleccione varios archivos, establezca la marca OFN_ALLOWMULTISELECT antes de llamar a DoModal. Debe proporcionar su propio búfer de nombre de archivo para almacenar la lista devuelta de varios nombres de archivo. Para ello, reemplace m_ofn.lpstrFile
por un puntero a un búfer que haya asignado, después de construir CFileDialog pero antes de llamar a DoModal
. Además, debe establecer m_ofn.nMaxFile
con el número de caracteres del búfer al que apunta m_ofn.lpstrFile
. Si establece el número máximo de archivos que se seleccionarán 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 que el usuario cambie el tamaño de un cuadro de diálogo de estilo explorador mediante el mouse o el teclado, establezca la marca OFN_ENABLESIZING. Establecer esta marca solo es necesario si proporciona un procedimiento de enlace o una plantilla personalizada. La marca solo funciona con un cuadro de diálogo de estilo explorador; no se puede cambiar el tamaño de los cuadros de diálogo de estilo antiguo.
El parámetro lpszFilter se usa para determinar el tipo de nombre de archivo que debe tener un archivo para mostrarse en la lista de archivos. La primera cadena del par de cadenas describe el filtro; la segunda cadena indica la extensión de nombre de archivo que se debe usar. Se pueden especificar varias extensiones mediante un punto y coma (el carácter ";") como delimitador. La cadena termina con dos caracteres de barra vertical (||
), seguidos de un carácter nulo. También puede usar un objeto CString para este parámetro.
Por ejemplo, Microsoft Excel permite a los usuarios abrir archivos que tienen extensiones .xlc (gráfico) o .xls (hoja de cálculo), entre otros. El filtro para Excel se podría escribir de la manera siguiente:
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 tiene previsto usar esta cadena para actualizar directamente la estructura OPENFILENAME
, debe delimitar las cadenas con el carácter nulo, '\0'
, en lugar de delimitarlas con las barras verticales ('|'
).
El parámetro bVistaStyle solo es aplicable cuando se ejecuta en Windows Vista o versiones posteriores. En versiones anteriores de Windows, este parámetro se omite. Si bVistaStyle se establece en TRUE, al compilar un programa con Visual Studio 2008 o versiones posteriores, se usará el cuadro de diálogo de archivo de estilo Vista nuevo. De lo contrario, se usará el cuadro de diálogo de archivo de estilo MFC anterior.
Las plantillas de cuadro de diálogo no se admiten en cuadros de diálogo basados en bVistaStyle.
Ejemplo
Consulte el ejemplo de CFileDialog::DoModal.
CFileDialog::DoModal
Llame a esta función para mostrar el cuadro de diálogo de archivo común de Windows y permitir al usuario examinar archivos y directorios y escribir un nombre de archivo.
virtual INT_PTR DoModal();
Valor devuelto
IDOK o IDCANCEL. Si se devuelve IDCANCEL, llame a la función CommDlgExtendedError de Windows para determinar si se ha producido un error.
IDOK y IDCANCEL son constantes que indican si el usuario seleccionó el botón Aceptar o Cancelar.
Comentarios
Si desea inicializar las distintas opciones de cuadro de diálogo de archivo estableciendo miembros de la estructura m_ofn
, debe hacerlo antes de llamar a DoModal
pero después de construir el objeto de cuadro de diálogo.
Por ejemplo, si desea permitir que el usuario seleccione varios archivos, establezca la marca OFN_ALLOWMULTISELECT antes de llamar a DoModal
, como se muestra en el ejemplo de código de este tema.
Cuando el usuario hace clic en los botones Aceptar o Cancelar del cuadro de diálogo, o bien selecciona la opción Cerrar en el menú de control del cuadro de diálogo, el control se devuelve a la aplicación. A continuación, puede llamar a otras funciones de miembro para recuperar la configuración o la información que el usuario especifica en el cuadro de diálogo.
DoModal
es una función virtual invalidada de la clase CDialog
.
Ejemplo
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
Habilita una lista desplegable en el botón Abrir o Guardar del cuadro de diálogo.
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador de la lista desplegable.
Comentarios
CFileDialog::EndVisualGroup
Detiene la adición de elementos a un grupo de objetos visuales del cuadro de diálogo.
HRESULT EndVisualGroup();
Valor devuelto
Devuelve S_OK si se realiza correctamente; de lo contrario, un valor de error.
Comentarios
CFileDialog::GetCheckButtonState
Recupera el estado actual de un botón de comprobación (casilla) del cuadro de diálogo.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Parámetros
dwIDCtl
Identificador de la casilla.
bChecked
Estado de la casilla. TRUE indica activada; FALSE indica desactivada.
Comentarios
CFileDialog::GetControlItemState
Recupera el estado actual de un elemento de un control contenedor que se encuentra en el cuadro de diálogo.
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
Parámetros
dwIDCtl
Identificador del control de contenedor.
dwIDItem
Identificador del elemento.
dwState
Referencia a una variable que recibe uno o varios valores de la enumeración CDCONTROLSTATE que indica el estado actual del control.
Comentarios
CFileDialog::GetControlState
Recupera la visibilidad actual y los estados habilitados de un control determinado.
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
Parámetros
dwIDCtl
Identificador del control.
dwState
Referencia a una variable que recibe uno o varios valores de la enumeración CDCONTROLSTATE que indica el estado actual del control.
Comentarios
CFileDialog::GetEditBoxText
Recupera el texto actual de un control de cuadro de edición.
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
Parámetros
dwIDCtl
Identificador del cuadro de edición.
strText
Valor de texto.
Comentarios
CFileDialog::GetFileExt
Llame a esta función para recuperar la extensión del nombre de archivo especificado en el cuadro de diálogo.
CString GetFileExt() const;
Valor devuelto
Extensión del nombre de archivo.
Comentarios
Por ejemplo, si el nombre del archivo especificado es DATA.TXT, GetFileExt
devuelve "TXT".
Si m_ofn.Flags
tiene establecida la marca OFN_ALLOWMULTISELECT, esta cadena contiene una secuencia de cadenas terminadas en null, en la que la primera cadena es la ruta de acceso del directorio del grupo de archivos seleccionado, seguida de los nombres de todos los archivos seleccionados por el usuario. Para recuperar los nombres de ruta de acceso de archivo, use las funciones de miembro GetStartPosition y GetNextPathName.
CFileDialog::GetFileName
Llame a esta función para recuperar el nombre del nombre de archivo especificado en el cuadro de diálogo.
CString GetFileName() const;
Valor devuelto
El nombre del archivo.
Comentarios
El nombre del archivo incluye el prefijo y la extensión. Por ejemplo, GetFileName
devolverá "TEXT. DAT" para el archivo C:\FILES\TEXT.DAT.
Si m_ofn.Flags
tiene establecida la marca OFN_ALLOWMULTISELECT
, debe llamar a GetStartPosition y GetNextPathName para recuperar un nombre de ruta de acceso de archivo.
CFileDialog::GetFileTitle
Llame a esta función para recuperar el título del archivo especificado en el cuadro de diálogo.
CString GetFileTitle() const;
Valor devuelto
Título del archivo.
Comentarios
El título del archivo incluye solo su prefijo, sin la ruta de acceso ni la extensión. Por ejemplo, GetFileTitle
devolverá "TEXT" para el archivo C:\FILES\TEXT.DAT.
Si m_ofn.Flags
tiene establecida la marca OFN_ALLOWMULTISELECT, esta cadena contiene una secuencia de cadenas terminadas en null, en la que la primera cadena es la ruta de acceso del directorio del grupo de archivos seleccionado, seguida de los nombres de todos los archivos seleccionados por el usuario. Por este motivo, use las funciones de miembro GetStartPosition y GetNextPathName para recuperar el siguiente nombre de archivo de la lista.
Ejemplo
Consulte el ejemplo de CFileDialog::DoModal.
CFileDialog::GetFolderPath
Llame a esta función de miembro para recuperar la ruta de acceso de la carpeta o el directorio abiertos actualmente para un cuadro de diálogo común Abrir o Guardar como de estilo explorador.
CString GetFolderPath() const;
Valor devuelto
Objeto CString que contiene la carpeta o el directorio abiertos actualmente.
Comentarios
El cuadro de diálogo se debe haber creado con el estilo OFN_EXPLORER; de lo contrario, el método producirá un error con una aserción.
Solo puede llamar a este método mientras se muestra el cuadro de diálogo. Una vez cerrado el cuadro de diálogo, esta función ya no funcionará y el método producirá un error con una aserción.
CFileDialog::GetIFileDialogCustomize
Recupera un puntero al objeto COM interno de un objeto CFileDialog determinado.
IFileDialogCustomize* GetIFileDialogCustomize();
Valor devuelto
Puntero al objeto COM interno de CFileDialog
. Es su responsabilidad liberar este puntero correctamente.
Comentarios
Use esta función solo en Windows Vista o versiones posteriores con un objeto que tenga bVistaStyle establecido en TRUE. Si usa esta función cuando bVistaStyle es FALSE, devolverá null en modo de versión y producirá una aserción en modo de depuración.
Para obtener más información sobre la interfaz de IFileDialogCustomize
, consulte IFileDialogCustomize.
Ejemplo
En este ejemplo se recupera el objeto COM interno. Para ejecutar este ejemplo de código, debe compilarlo en Windows Vista o una versión posterior.
// 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
Recupera un puntero al objeto COM interno de un objeto CFileDialog
determinado.
IFileOpenDialog* GetIFileOpenDialog();
Valor devuelto
Puntero al objeto COM interno de CFileDialog
. Es su responsabilidad liberar este puntero correctamente.
Comentarios
Use esta función solo en Windows Vista o versiones posteriores con un objeto que tenga bVistaStyle establecido en TRUE. Esta función devuelve null si CFileDialog
no es un cuadro de diálogo Abrir o si bVistaStyle está establecido en FALSE. En este último caso, la función solo devuelve null en modo de versión; en modo de depuración, producirá una aserción.
Para obtener más información sobre la interfaz de IFileOpenDialog
, consulte IFileOpenDialog.
Ejemplo
En este ejemplo se recupera el objeto COM interno. Para ejecutar este código, debe compilarlo en Windows Vista o una versión posterior.
// 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
Recupera un puntero al objeto COM interno de un objeto CFileDialog
determinado.
IFileSaveDialog* GetIFileSaveDialog();
Valor devuelto
Puntero al objeto COM interno de CFileDialog
. Es su responsabilidad liberar este puntero correctamente.
Comentarios
Use esta función solo en Windows Vista o versiones posteriores con un objeto que tenga bVistaStyle establecido en TRUE. Esta función devolverá null si CFileDialog
no es un cuadro de diálogo Guardar o si bVistaStyle está establecido en FALSE. En este último caso, la función solo devuelve null en modo de versión; en modo de depuración, producirá una aserción.
Para obtener más información sobre la interfaz de IFileSaveDialog
, consulte IFileSaveDialog.
Ejemplo
En este ejemplo se recupera el objeto COM interno. Para ejecutar este ejemplo de código, debe compilarlo en Windows Vista o una versión posterior.
// 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
Llame a esta función para recuperar el siguiente nombre de archivo del grupo seleccionado en el cuadro de diálogo.
CString GetNextPathName(POSITION& pos) const;
Parámetros
pos
Referencia a un valor POSITION devuelto por una llamada de función GetNextPathName
o GetStartPosition
anterior. Null si se ha llegado al final de la lista.
Valor devuelto
Ruta de acceso completa del archivo.
Comentarios
La ruta de acceso del nombre de archivo incluye el título del archivo más toda la ruta de acceso del directorio. Por ejemplo, GetNextPathName
devolverá "C:\FILES\TEXT. DAT" para el archivo C:\FILES\TEXT.DAT. Puede usar GetNextPathName
en un bucle de iteración hacia delante si establece la posición inicial con una llamada a GetStartPosition
.
Si la selección consta de un solo archivo, se devolverá ese nombre de archivo.
CFileDialog::GetOFN
Recupera la estructura OPENFILENAME
asociada.
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
Valor devuelto
Estructura OPENFILENAME.
Comentarios
Use la segunda versión de esta función para inicializar la apariencia de un cuadro de diálogo Abrir archivo o Guardar archivo como después de su construcción pero antes de que se muestre con la función de miembro DoModal
. Por ejemplo, puede establecer el miembro lpstrTitle
de m_ofn
en la descripción que quiere que tenga el cuadro de diálogo.
CFileDialog::GetPathName
Llame a esta función para recuperar la ruta de acceso completa del archivo especificado en el cuadro de diálogo.
CString GetPathName() const;
Valor devuelto
Ruta de acceso completa del archivo.
Comentarios
La ruta de acceso del nombre de archivo incluye el título del archivo más toda la ruta de acceso del directorio. Por ejemplo, GetPathName
devolverá "C:\FILES\TEXT. DAT" para el archivo C:\FILES\TEXT.DAT.
Si m_ofn.Flags
tiene establecida la marca OFN_ALLOWMULTISELECT, esta cadena contiene una secuencia de cadenas terminadas en null, en la que la primera cadena es la ruta de acceso del directorio del grupo de archivos seleccionado, seguida de los nombres de todos los archivos seleccionados por el usuario. Por este motivo, use las funciones de miembro GetStartPosition y GetNextPathName para recuperar el siguiente nombre de archivo de la lista.
Ejemplo
Consulte el ejemplo de CFileDialog::DoModal.
CFileDialog::GetReadOnlyPref
Llame a esta función para determinar si se ha seleccionado la casilla Solo lectura en los cuadros de diálogo estándar Abrir archivo y Guardar archivo como de Windows.
BOOL GetReadOnlyPref() const;
Valor devuelto
Distinto de cero si la casilla Solo lectura del cuadro de diálogo está activada; de lo contrario, 0.
Comentarios
Puede ocultar la casilla Solo lectura estableciendo el estilo OFN_HIDEREADONLY en el constructor CFileDialog
.
Nota:
Los objetos CFileDialog
de estilo Windows Vista o versiones posteriores no admiten esta función. Al intentar usar esta función en un objeto CFileDialog
de estilo Windows Vista o versiones posteriores se generará CNotSupportedException.
CFileDialog::GetResult
Recupera la elección que el usuario realizó en el cuadro de diálogo.
IShellItem* GetResult() throw();
Valor devuelto
Puntero a un objeto IShellItem que representa la elección del usuario.
Comentarios
CFileDialog::GetResults
Recupera las opciones del usuario en un cuadro de diálogo que permite la selección múltiple.
IShellItemArray* GetResults() throw();
Valor devuelto
Puntero a un objeto IShellItemArray a través del cual se puede acceder a los elementos seleccionados del cuadro de diálogo.
Comentarios
CFileDialog::GetSelectedControlItem
Recupera un elemento determinado del control contenedor especificado en el cuadro de diálogo.
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
Parámetros
dwIDCtl
Identificador del control de contenedor.
dwIDItem
Identificador del elemento que el usuario ha seleccionado en el control.
Comentarios
CFileDialog::GetStartPosition
Llame a esta función de miembro para recuperar la posición del primer nombre de ruta de acceso de archivo de la lista, si m_ofn.Flags
tiene establecida la marca OFN_ALLOWMULTISELECT.
POSITION GetStartPosition() const;
Valor devuelto
Valor POSITION que se puede usar para la iteración; Null si la lista está vacía.
CFileDialog::HideControl
Llame a esta función de miembro para ocultar el control especificado en un cuadro de diálogo común Abrir o Guardar como de estilo explorador.
void HideControl(int nID);
Parámetros
Nid
Identificador del control que se va a ocultar.
Comentarios
El cuadro de diálogo se debe haber creado con el estilo OFN_EXPLORER; de lo contrario, la función producirá un error con una aserción.
CFileDialog::IsPickFoldersMode
Determina si el cuadro de diálogo actual está en modo de selector de carpetas.
BOOL IsPickFoldersMode() const;
Valor devuelto
TRUE si el cuadro de diálogo está en modo de selector de carpetas; de lo contrario, FALSE.
Comentarios
CFileDialog::m_ofn
m_ofn
es una estructura de tipo OPENFILENAME
. Los datos de esta estructura representan el estado actual de CFileDialog
.
Comentarios
Use esta estructura para inicializar la apariencia de un cuadro de diálogo Abrir archivo o Guardar archivo como después de construirlo pero antes de mostrarlo con el método DoModal. Por ejemplo, puede establecer el miembro IpstrTitle de m_ofn
en la descripción que quiere que tenga el cuadro de diálogo.
Con el estilo Windows Vista o versiones posteriores de CFileDialog, no se garantiza que m_ofn
siempre coincida con el estado del cuadro de diálogo. Se sincroniza con el cuadro de diálogo en versiones anteriores de Windows. Consulte CFileDialog::ApplyOFNToShellDialog y CFileDialog::UpdateOFNFromShellDialog para obtener más información sobre cómo sincronizar la estructura m_ofn
y el estado de CFileDialog
en Windows Vista o versiones posteriores.
Los cuadros de diálogo de archivo de estilo Windows Vista o versiones posteriores no admiten determinados miembros y marcas de CFileDialog
. Como resultado, estos no tendrán ningún efecto.
A continuación se muestra una lista de los miembros que no son compatibles con Windows Vista o versiones posteriores:
lpstrCustomFilter
lpstrInitialDir
lCustData
lpfnHook
lpTemplateName
Las marcas siguientes no se admiten y, por tanto, no tienen ningún efecto cuando se usa el estilo Windows Vista o versiones posteriores de CFileDialog
:
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES: siempre activado de forma eficaz en Windows Vista o versiones posteriores
OFN_NOLONGNAMES: siempre desactivado de forma eficaz en Windows Vista o versiones posteriores
OFN_NONETWORKBUTTON: siempre activado de forma eficaz en Windows Vista o versiones posteriores
OFN_READONLY
OFN_SHOWHELP
Para obtener más información sobre esta estructura, consulte la estructura OPENFILENAME en Windows SDK.
CFileDialog::MakeProminent
Coloca un control en el cuadro de diálogo para que se muestre destacado en comparación con otros controles.
HRESULT MakeProminent(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador del control.
Comentarios
CFileDialog::OnButtonClicked
Se llama cuando se hace clic en el botón.
virtual void OnButtonClicked(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador del botón.
Comentarios
CFileDialog::OnCheckButtonToggled
Se llama cuando se activa o se desactiva la casilla.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Parámetros
dwIDCtl
Identificador de la casilla.
bChecked
Activado o desactivado.
Comentarios
CFileDialog::OnControlActivating
Se llama cuando se activa el control.
virtual void OnControlActivating(DWORD dwIDCtl);
Parámetros
dwIDCtl
Identificador del control.
Comentarios
CFileDialog::OnFileNameChange
Invalide este método si quiere controlar el mensaje WM_NOTIFY CDN_SELCHANGE.
virtual void OnFileNameChange();
Comentarios
El sistema envía el mensaje CDN_SELCHANGE cuando el usuario selecciona un nuevo archivo o carpeta en la lista de archivos del cuadro de diálogo Abrir o Guardar como. Invalide este método si quiere realizar alguna acción en respuesta a este mensaje.
El sistema envía este mensaje solo si el cuadro de diálogo se creó con la marca OFN_EXPLORER activada. Para obtener más información sobre la notificación, consulte CDN_SELCHANGE. Para obtener información sobre la marca OFN_EXPLORER, consulte la estructura OPENFILENAME y Cuadros de diálogo Abrir y Guardar como.
CFileDialog::OnFileNameOK
Invalide esta función solo si quiere proporcionar una validación personalizada de los nombres de archivo especificados en un cuadro de diálogo de archivo común.
virtual BOOL OnFileNameOK();
Valor devuelto
1 si el nombre de archivo no es un nombre de archivo válido; de lo contrario, 0.
Comentarios
Esta función permite rechazar un nombre de archivo por cualquier motivo específico de la aplicación. Normalmente, no es necesario usar esta función porque el marco proporciona la validación predeterminada de los nombres de archivo y muestra un cuadro de mensaje si se especifica un nombre de archivo no válido.
Si se devuelve 1, el cuadro de diálogo se seguirá mostrando para que el usuario escriba otro nombre de archivo. El procedimiento del cuadro de diálogo descarta el cuadro de diálogo si la devolución es 0. Los demás valores devueltos distintos de cero están reservados actualmente y no se deben usar.
CFileDialog::OnFolderChange
Invalide esta función para controlar el mensaje WM_NOTIFYCDN_FOLDERCHANGE.
virtual void OnFolderChange();
Comentarios
El mensaje de notificación se envía cuando se abre una nueva carpeta en el cuadro de diálogo Abrir o Guardar como.
La notificación solo se envía si el cuadro de diálogo se creó con el estilo OFN_EXPLORER. Para obtener más información sobre la notificación, consulte CDN_FOLDERCHANGE. Para obtener información sobre el estilo OFN_EXPLORER, consulte la estructura OPENFILENAME y Cuadros de diálogo Abrir y Guardar como.
CFileDialog::OnInitDone
Invalide esta función para controlar el mensaje WM_NOTIFY CDN_INITDONE.
virtual void OnInitDone();
Comentarios
El sistema envía este mensaje de notificación cuando el sistema ha terminado de organizar los controles del cuadro de diálogo Abrir o Guardar como para hacer espacio para los controles del cuadro de diálogo secundario.
El sistema lo envía solo si el cuadro de diálogo se creó con el estilo OFN_EXPLORER. Para obtener más información sobre la notificación, consulte CDN_INITDONE. Para obtener información sobre el estilo OFN_EXPLORER, consulte la estructura OPENFILENAME y Cuadros de diálogo Abrir y Guardar como.
Nota:
Los cuadros de diálogo de archivo de estilo Windows Vista o versiones posteriores no admiten esta función. Al intentar usar esta función en un cuadro de diálogo de archivo de estilo Windows Vista o versiones posteriores, se generará CNotSupportedException.
CFileDialog::OnItemSelected
Se llama cuando se selecciona el elemento contenedor.
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
Parámetros
dwIDCtl
Identificador del control de contenedor.
dwIDItem
Identificador del elemento.
Comentarios
CFileDialog::OnLBSelChangedNotify
Se llama a esta función cada vez que la selección actual de un cuadro de lista está a punto de cambiar.
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
Parámetros
nIDBox
Identificador del cuadro de lista o el cuadro combinado en el que se ha producido la selección.
iCurSel
Índice de la selección actual.
nCode
Código de notificación de control. Este parámetro debe tener uno de los valores siguientes:
CD_LBSELCHANGE especifica que iCurSel es el elemento seleccionado en un cuadro de lista de selección única.
CD_LBSELSUB especifica que iCurSel ya no está seleccionado en un cuadro de lista de selección múltiple.
CD_LBSELADD especifica que iCurSel está seleccionado en un cuadro de lista de selección múltiple.
CD_LBSELNOITEMS especifica que no existe ninguna selección en un cuadro de lista de selección múltiple.
Comentarios
Invalide esta función para proporcionar un control personalizado de los cambios de selección en el cuadro de lista. Por ejemplo, puede usar esta función para mostrar los derechos de acceso o la fecha de última modificación de cada archivo que seleccione el usuario.
CFileDialog::OnShareViolation
Invalide esta función para proporcionar un control personalizado de las infracciones de recurso compartido.
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
Parámetros
lpszPathName
Ruta de acceso del archivo en el que se produjo la infracción de recurso compartido.
Valor devuelto
Uno de los siguientes valores:
OFN_SHAREFALLTHROUGH: el nombre de archivo se devuelve desde el cuadro de diálogo.
OFN_SHARENOWARN: no es necesario realizar ninguna otra acción.
OFN_SHAREWARN: el usuario recibe el mensaje de advertencia estándar para este error.
Comentarios
Normalmente, no es necesario usar esta función porque el marco proporciona la comprobación predeterminada de las infracciones de recurso compartido y muestra un cuadro de mensaje si se produce una infracción de recurso compartido.
Si quiere deshabilitar la comprobación de infracciones de recurso compartido, use el operador OR bit a bit para combinar la marca OFN_SHAREAWARE con m_ofn.Flags
.
CFileDialog::OnTypeChange
Invalide esta función para controlar el mensaje WM_NOTIFYCDN_TYPECHANGE.
virtual void OnTypeChange();
Comentarios
El mensaje de notificación se envía cuando el usuario selecciona un nuevo tipo de archivo de la lista de tipos de archivo en el cuadro de diálogo Abrir o Guardar como.
La notificación solo se envía si el cuadro de diálogo se creó con el estilo OFN_EXPLORER. Para obtener más información sobre la notificación, consulte CDN_TYPECHANGE. Para obtener información sobre el estilo OFN_EXPLORER, consulte la estructura OPENFILENAME y Cuadros de diálogo Abrir y Guardar como.
CFileDialog::RemoveControlItem
Quita un elemento de un control contenedor del cuadro de diálogo.
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parámetros
dwIDCtl
Identificador del control contenedor del que se va a quitar el elemento.
dwIDItem
Identificador del elemento.
Comentarios
CFileDialog::SetCheckButtonState
Establece el estado actual de un botón de comprobación (casilla) del cuadro de diálogo.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Parámetros
dwIDCtl
Identificador de la casilla.
bChecked
Estado de la casilla. TRUE indica que está activada; FALSE indica que está desactivada.
Comentarios
CFileDialog::SetControlItemState
Establece el estado actual de un elemento de un control contenedor que se encuentra en el cuadro de diálogo.
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
Parámetros
dwIDCtl
Identificador del control de contenedor.
dwIDItem
Identificador del elemento.
dwState
Uno o varios valores de la enumeración CDCONTROLSTATE que indican el nuevo estado del control.
Comentarios
CFileDialog::SetControlItemText
Establece el texto de un elemento de control. Por ejemplo, el texto que acompaña a un botón de radio o a un elemento de un menú.
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parámetros
dwIDCtl
Identificador del control de contenedor.
dwIDItem
Identificador del elemento.
strLabel
Texto del elemento.
Comentarios
CFileDialog::SetControlLabel
Establece el texto asociado a un control, como el texto de un botón o una etiqueta de cuadro de edición.
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
Parámetros
dwIDCtl
Identificador del control.
strLabel
Nombre del control.
Comentarios
CFileDialog::SetControlState
Establece la visibilidad actual y los estados habilitados de un control determinado.
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
Parámetros
dwIDCtl
Identificador del control.
dwState
Uno o varios valores de la enumeración CDCONTROLSTATE que indican el estado actual del control.
Comentarios
CFileDialog::SetControlText
Llame a este método para establecer el texto del control especificado en un cuadro de diálogo Abrir o Guardar como de estilo explorador.
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
Parámetros
Nid
[in] Identificador del control para el que se va a establecer el texto.
lpsz
[in] Puntero a la cadena que contiene el texto que se va a establecer para el control.
Comentarios
Ambas versiones de esta función son válidas para las aplicaciones que usan Unicode. Sin embargo, solo la versión con el tipo LPCSTR es válida para las aplicaciones que usan ANSI.
Para usar este método, debe crear el cuadro de diálogo con el estilo OFN_EXPLORER. De lo contrario, la función producirá un error con una aserción.
CFileDialog::SetDefExt
Llame a esta función para establecer la extensión de nombre de archivo predeterminada para un cuadro de diálogo común Abrir o Guardar como de estilo explorador.
void SetDefExt(LPCSTR lpsz);
Parámetros
lpsz
Puntero a una cadena que contiene la extensión predeterminada que se va a usar para el objeto de cuadro de diálogo. Esta cadena no debe contener un punto (.).
Comentarios
El cuadro de diálogo se debe haber creado con el estilo OFN_EXPLORER; de lo contrario, la función producirá un error con una aserción.
CFileDialog::SetEditBoxText
Establece el texto actual de un control de cuadro de edición.
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
Parámetros
dwIDCtl
Identificador del cuadro de edición.
strText
Valor de texto.
Comentarios
CFileDialog::SetProperties
Proporciona un almacén de propiedades que define los valores predeterminados que se van a usar para el elemento que se está guardando.
BOOL SetProperties(LPCWSTR lpszPropList);
Parámetros
lpszPropList
Lista de propiedades predefinidas separadas por ";". Para ver una lista de las marcas, consulte la sección Marcas de OPENFILENAME.
Comentarios
CFileDialog::SetSelectedControlItem
Establece el estado seleccionado de un elemento determinado de un grupo de botones de opción o un cuadro combinado que se encuentran en el cuadro de diálogo.
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parámetros
dwIDCtl
Identificador del control de contenedor.
dwIDItem
Identificador del elemento que el usuario ha seleccionado en el control.
Comentarios
CFileDialog::SetTemplate
Establece la plantilla de cuadro de diálogo para el objeto CFileDialog.
void SetTemplate(
UINT nWin3ID,
UINT nWin4ID);
void SetTemplate(
LPCTSTR lpWin3ID,
LPCTSTR lpWin4ID);
Parámetros
nWin3ID
[in] Contiene el número de identificador del recurso de plantilla para el objeto CFileDialog
que no es de estilo explorador. Esta plantilla solo se usa en Windows NT 3.51 o cuando el estilo OFN_EXPLORER no está presente.
nWin4ID
[in] Contiene el número de identificador del recurso de plantilla para el objeto CFileDialog
de estilo explorador. Esta plantilla solo se usa en Windows NT 4.0 y versiones posteriores, Windows 95 y versiones posteriores, o cuando el estilo OFN_EXPLORER está presente.
lpWin3ID
[in] Contiene el nombre del recurso de plantilla para el objeto CFileDialog
que no es de estilo explorador. Esta plantilla solo se usa en Windows NT 3.51 o cuando el estilo OFN_EXPLORER no está presente.
lpWin4ID
[in] Contiene el nombre del recurso de plantilla del objeto CFileDialog
de estilo explorador. Esta plantilla solo se usa en Windows NT 4.0 y versiones posteriores, Windows 95 y versiones posteriores, o cuando el estilo OFN_EXPLORER está presente.
Comentarios
El sistema usará solo una de las plantillas especificadas. El sistema determina la plantilla que se va a usar en función de la presencia del estilo OFN_EXPLORER y el sistema operativo en el que se ejecuta la aplicación. Al especificar una plantilla que no es de estilo explorador y de estilo explorador, es fácil admitir Windows NT 3.51, Windows NT 4.0 y versiones posteriores, y Windows 95 y versiones posteriores.
Nota:
Los cuadros de diálogo de archivo de estilo Windows Vista o versiones posteriores no admiten esta función. Al intentar usar esta función en un cuadro de diálogo de archivo de estilo Windows Vista o versiones posteriores, se generará CNotSupportedException. Una alternativa es usar un cuadro de diálogo personalizado. Para obtener más información sobre el uso de un objeto CFileDialog
personalizado, consulte IFileDialogCustomize.
CFileDialog::StartVisualGroup
Declara un grupo de objetos visuales en el cuadro de diálogo. Las llamadas posteriores a cualquier método "add" agregan esos elementos a este grupo.
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
Parámetros
dwIDCtl
Identificador del grupo de objetos visuales.
strLabel
El nombre del grupo.
Comentarios
CFileDialog::UpdateOFNFromShellDialog
Actualiza la estructura de datos m_ofn
de CFileDialog en función del estado actual del objeto interno.
void UpdateOFNFromShellDialog();
Comentarios
En versiones de Windows anteriores a Windows Vista, la estructura de datos miembro OPENFILENAME se sincronizaba continuamente con el estado de CFileDialog
. Cualquier cambio en la variable de miembro m_ofn afectó directamente al estado del cuadro de diálogo. Además, los cambios en el estado del cuadro de diálogo actualizaron inmediatamente la variable de miembro m_ofn.
En Windows Vista o versiones posteriores, la estructura de datos m_ofn
no se actualiza automáticamente. Para garantizar la precisión de los datos de la variable de miembro m_ofn
, debe llamar a la función UpdateOFNFromShellDialog
antes de acceder a los datos. Windows llama a esta función automáticamente durante el procesamiento de IFileDialog::OnFileOK.
Para obtener más información sobre cómo usar la clase CFileDialog
en Windows Vista o versiones posteriores, consulte Clase CFileDialog.
Ejemplo
En este ejemplo se actualiza CFileDialog
antes de mostrarlo. Antes de actualizar la variable de miembro m_ofn
, es necesario sincronizarla con el estado actual del cuadro de diálogo.
// 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();