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

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

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 valores siguientes:

  • 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();

Consulte también

CCommonDialog (clase)
Gráfico de jerarquías