Clase CDialog

Clase base utilizada para abrir cuadros de diálogo en la pantalla.

Sintaxis

class CDialog : public CWnd

Miembros

Constructores públicos

Nombre Descripción
CDialog::CDialog Construye un objeto CDialog.

Métodos públicos

Nombre Descripción
CDialog::Create Inicializa el objeto CDialog. Crea un cuadro de diálogo no modal y lo asocia al objeto CDialog.
CDialog::CreateIndirect Crea un cuadro de diálogo no modal a partir de una plantilla para cuadros de diálogo en memoria (no basada en recursos).
CDialog::DoModal Llama a un cuadro de diálogo modal y regresa cuando termina.
CDialog::EndDialog Cierra un cuadro de diálogo modal.
CDialog::GetDefID Obtiene el identificador del control de botón de inserción predeterminado de un cuadro de diálogo.
CDialog::GotoDlgCtrl Mueve el foco a un control de cuadro de diálogo específico del cuadro de diálogo.
CDialog::InitModalIndirect Crea un cuadro de diálogo modal a partir de una plantilla para cuadros de diálogo en memoria (no basada en recursos). Los parámetros se almacenan hasta que se llama a la función DoModal.
CDialog::MapDialogRect Convierte las unidades de cuadro de diálogo de un rectángulo en unidades de pantalla.
CDialog::NextDlgCtrl Mueve el foco al siguiente control de cuadro de diálogo del cuadro de diálogo.
CDialog::OnInitDialog Invalide para aumentar la inicialización del cuadro de diálogo.
CDialog::OnSetFont Invalide para especificar la fuente que debe usar un control de cuadro de diálogo cuando dibuja texto.
CDialog::PrevDlgCtrl Mueve el foco al control de cuadro de diálogo anterior del cuadro de diálogo.
CDialog::SetDefID Cambia el control de botón de inserción predeterminado de un cuadro de diálogo a un botón de inserción especificado.
CDialog::SetHelpID Establece un identificador de ayuda contextual del cuadro de diálogo.

Métodos protegidos

Nombre Descripción
CDialog::OnCancel Invalide para realizar la acción del botón Cancelar o de la tecla Esc. El valor predeterminado cierra el cuadro de diálogo y DoModal devuelve IDCANCEL.
CDialog::OnOK Invalide para realizar la acción del botón Aceptar en un cuadro de diálogo modal. El valor predeterminado cierra el cuadro de diálogo y DoModal devuelve IDOK.

Comentarios

Los cuadros de diálogo son de dos tipos: modales y no modales. Los cuadros de diálogo modales deben cerrarse para que la aplicación pueda continuar, mientras que los cuadros de diálogo no modales permiten abrir cuadros de diálogo y volver otra tarea sin cancelar ni quitar esos cuadros de diálogo.

Un objeto CDialog es una combinación de una plantilla de cuadro de diálogo y una clase derivada de CDialog. Use el editor de cuadros de diálogo para crear la plantilla de cuadro de diálogo y almacenarla en un recurso. Luego, use el asistente para agregar clases para crear una clase derivada de CDialog.

Al igual que cualquier otra ventana, un cuadro de diálogo recibe mensajes de Windows. En un cuadro de diálogo, resulta especialmente importante controlar los mensajes de notificación procedentes de los controles del cuadro de diálogo, ya que es así cómo interactúa el usuario con el cuadro de diálogo. Use el Asistente para clases para seleccionar qué mensajes desea controlar; se agregarán a la clase las entradas de asignación de mensajes y las funciones miembro del controlador de mensajes pertinentes. Solo hay que escribir código específico de la aplicación en las funciones miembro del controlador.

Si lo prefiere, siempre puede escribir las entradas de asignación de mensajes y funciones miembro manualmente.

En todos los cuadros de diálogo, hasta en el más trivial, se agregan variables miembro a la clase de cuadro de diálogo derivada para almacenar los datos que el usuario introduce en los controles del cuadro de diálogo o para mostrar los datos del usuario. Puede usar el asistente para agregar variables para crear variables miembro y asociarlas a controles. Al mismo tiempo, se selecciona un tipo de variable y un intervalo de valores permitido de cada variable. El asistente para código agrega las variables miembro a la clase de cuadro de diálogo derivada.

Se genera una asignación de datos para controlar automáticamente el intercambio de datos entre las variables miembro y los controles del cuadro de diálogo. La asignación de datos proporciona funciones que inicializan los controles en el cuadro de diálogo con los valores adecuados, recuperan los datos y los validan.

Para crear un cuadro de diálogo modal, construya un objeto en la pila mediante el constructor de la clase de cuadro de diálogo derivada y, a continuación, llame a DoModal para crear la ventana de cuadro de diálogo y sus controles. Si desea crear un cuadro de diálogo no modal, llame a Create en el constructor de la clase de cuadro de diálogo.

También puede crear una plantilla en memoria mediante una estructura de datos DLGTEMPLATE, como se describe en Windows SDK. Después de construir un objeto CDialog, llame a CreateIndirect para crear un cuadro de diálogo no modal, o bien llame a InitModalIndirect y a DoModal para crear un cuadro de diálogo modal.

La asignación de datos de intercambio y validación se escribe en una invalidación de CWnd::DoDataExchange que se agrega a la nueva clase de cuadro de diálogo. Consulte la función miembro DoDataExchange en CWnd para obtener más información sobre la funcionalidad de intercambio y validación.

Tanto el programador como el marco llaman a DoDataExchange indirectamente a través de una llamada a CWnd::UpdateData.

El marco llama a UpdateData cuando el usuario hace clic en el botón Aceptar para cerrar un cuadro de diálogo modal (los datos no se recuperan si se hace clic en el botón Cancelar). La implementación predeterminada de OnInitDialog también llama a UpdateData para establecer los valores iniciales de los controles. Normalmente, OnInitDialog se invalida para inicializar aún más los controles. A OnInitDialog se llama después de crear todos los controles de cuadro de diálogo y justo antes de que se abra el cuadro de diálogo.

Puede llamar a CWnd::UpdateData en cualquier momento durante la ejecución de un cuadro de diálogo modal o no modal.

Si desarrolla un cuadro de diálogo manualmente, agregará las variables miembro necesarias a la clase derivada del cuadro de diálogo, así como las funciones miembro para establecer u obtener estos valores.

Un cuadro de diálogo modal se cierra automáticamente cuando el usuario presiona los botones Aceptar o Cancelar, o cuando el código llama a la función miembro EndDialog.

Al implementar un cuadro de diálogo no modal, invalide siempre la función miembro OnCancel y llame a DestroyWindow desde ella. No llame a la clase base CDialog::OnCancel, ya que llama a EndDialog, lo que hará que el cuadro de diálogo sea invisible, pero no lo destruirá. También debe invalidar PostNcDestroy en el caso de los cuadros de diálogo no modales para eliminar this, ya que los cuadros de diálogo no modales se suelen asignar con new. Normalmente, los cuadros de diálogo modales se construyen en el marco y no necesitan la limpieza de PostNcDestroy.

Para obtener más información sobre CDialog, vea Cuadros de diálogo.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CDialog

Requisitos

Encabezado: afxwin.h

CDialog::CDialog

Para construir un cuadro de diálogo modal basado en recursos, llame a cualquier forma pública del constructor.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

Parámetros

lpszTemplateName
Contiene una cadena terminada en null que es el nombre de un recurso de plantilla de cuadro de diálogo.

nIDTemplate
Contiene el número de identificador de un recurso de plantilla de cuadro de diálogo.

pParentWnd
Apunta al objeto de ventana primaria o propietaria (de tipo CWnd) al que pertenece el objeto de cuadro de diálogo. Si es NULL, la ventana primaria del objeto de cuadro de diálogo se establece en la ventana principal de la aplicación.

Comentarios

Una forma del constructor proporciona acceso al recurso de cuadro de diálogo según el nombre de plantilla. El otro constructor proporciona acceso según el número de identificador de plantilla, que suele ir precedido del prefijo IDD_ (por ejemplo, IDD_DIALOG1).

Para construir un cuadro de diálogo modal a partir de una plantilla en memoria, primero invoque el constructor protegido y sin parámetros y, a continuación, llame a InitModalIndirect.

Tras construir un cuadro de diálogo modal con uno de los métodos anteriores, llame a DoModal.

Para construir un cuadro de diálogo no modal, use la forma protegida del constructor CDialog. El constructor está protegido porque debe derivar su propia clase de cuadro de diálogo para implementar un cuadro de diálogo no modal. La construcción de un cuadro de diálogo no modal es un proceso de dos pasos. Primero se llama al constructor y luego, a la función miembro Create para crear un cuadro de diálogo basado en recursos, o bien a CreateIndirect para crear el cuadro de diálogo a partir de una plantilla en memoria.

CDialog::Create

Llame a Create para crear un cuadro de diálogo no modal usando una plantilla de cuadro de diálogo a partir de un recurso.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

Parámetros

lpszTemplateName
Contiene una cadena terminada en null que es el nombre de un recurso de plantilla de cuadro de diálogo.

pParentWnd
Apunta al objeto de ventana primaria (de tipo CWnd) al que pertenece el objeto de cuadro de diálogo. Si es NULL, la ventana primaria del objeto de cuadro de diálogo se establece en la ventana principal de la aplicación.

nIDTemplate
Contiene el número de identificador de un recurso de plantilla de cuadro de diálogo.

Valor devuelto

Ambas formas devuelven un valor distinto de cero si la creación y la inicialización del cuadro de diálogo suceden correctamente; de lo contrario, 0.

Comentarios

La llamada a Create se puede incluir dentro del constructor o bien se le puede llamar después de invocar el constructor.

Se proporcionan dos formas de la función miembro Create para acceder al recurso de plantilla de cuadro de diálogo: según el nombre de plantilla o según el número de identificador de plantilla (por ejemplo, IDD_DIALOG1).

En ambos casos, pase un puntero al objeto de ventana primaria. Si pParentWnd es NULL, el cuadro de diálogo se creará con su ventana primaria o propietaria establecida en la ventana principal de la aplicación.

La función miembro Create regresa inmediatamente después de crear el cuadro de diálogo.

Use el estilo WS_VISIBLE en la plantilla de cuadro de diálogo si el cuadro de diálogo debe aparecer cuando se cree la ventana primaria. De lo contrario, debe llamar a ShowWindow. Para obtener más estilos de cuadro de diálogo y sus usos, vea la estructura DLGTEMPLATE en Windows SDK y Estilos de ventana en Referencia de MFC.

Use la función CWnd::DestroyWindow para destruir un cuadro de diálogo creado por la función Create.

Ejemplo

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

Llame a esta función miembro para crear un cuadro de diálogo no modal a partir de una plantilla de cuadro de diálogo en memoria.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parámetros

lpDialogTemplate
Apunta a la memoria que contiene la plantilla de cuadro de diálogo utilizada para crear el cuadro de diálogo. Esta plantilla tiene la forma de una estructura DLGTEMPLATE y contiene información sobre los controles, como se describe en Windows SDK.

pParentWnd
Apunta al objeto de ventana primaria del objeto de cuadro de diálogo (de tipo CWnd). Si es NULL, la ventana primaria del objeto de cuadro de diálogo se establece en la ventana principal de la aplicación.

lpDialogInit
Apunta a un recurso DLGINIT.

hDialogTemplate
Contiene un identificador de la memoria global que contiene una plantilla de cuadro de diálogo. Esta plantilla tiene la forma de una estructura DLGTEMPLATE y contiene datos de cada control del cuadro de diálogo.

Valor devuelto

Distinto de cero si el cuadro de diálogo se creó e inicializó correctamente; de lo contrario, 0.

Comentarios

La función miembro CreateIndirect regresa inmediatamente después de crear el cuadro de diálogo.

Use el estilo WS_VISIBLE en la plantilla de cuadro de diálogo si el cuadro de diálogo debe aparecer cuando se cree la ventana primaria. De lo contrario, debe llamar a ShowWindow para que aparezca. Para obtener más información sobre cómo se pueden especificar otros estilos de cuadro de diálogo en la plantilla, vea la estructura DLGTEMPLATE en Windows SDK.

Use la función CWnd::DestroyWindow para destruir un cuadro de diálogo creado por la función CreateIndirect.

Los cuadros de diálogo que contienen controles ActiveX requieren información adicional proporcionada en un recurso DLGINIT.

CDialog::DoModal

Llame a esta función miembro para invocar al cuadro de diálogo modal y devolver el resultado del cuadro de diálogo cuando haya terminado.

virtual INT_PTR DoModal();

Valor devuelto

Un valor int que especifica el valor del parámetro nResult que se pasó a la función miembro CDialog::EndDialog, que se usa para cerrar el cuadro de diálogo. El valor devuelto es -1 si la función no pudo crear el cuadro de diálogo, o IDABORT si se produjo algún otro error, en cuyo caso la ventana de salida contendrá información de error de GetLastError.

Comentarios

Esta función miembro controla toda la interacción con el usuario mientras el cuadro de diálogo está activo. Esto es lo que hace que el cuadro de diálogo sea modal; es decir, el usuario no puede interactuar con otras ventanas hasta que se cierre el cuadro de diálogo.

Si el usuario hace clic en uno de los botones de inserción del cuadro de diálogo, como Aceptar o Cancelar, se llama a una función miembro del controlador de mensajes, como OnOK u OnCancel, para intentar cerrar el cuadro de diálogo. La función miembro OnOK predeterminada validará y actualizará los datos del cuadro de diálogo y lo cerrará con un resultado IDOK, mientras que la función miembro OnCancel predeterminada cerrará el cuadro de diálogo con el resultado IDCANCEL y sin validar ni actualizar los datos del cuadro de diálogo. Estas funciones de controlador de mensajes se pueden invalidar para modificar su comportamiento.

Nota:

Ahora se llama a PreTranslateMessage para el procesamiento de mensajes de los cuadros de diálogo modales.

Ejemplo

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

Llame a esta función miembro para finalizar un cuadro de diálogo modal.

void EndDialog(int nResult);

Parámetros

nResult
Contiene el valor que se va a devolver desde el cuadro de diálogo al autor de la llamada a DoModal.

Comentarios

Esta función miembro devuelve nResult como el valor devuelto de DoModal. Debe usar la función EndDialog para completar el procesamiento cada vez que se crea un cuadro de diálogo modal.

Puede llamar a EndDialog en cualquier momento, incluso en OnInitDialog, en cuyo caso debe cerrar el cuadro de diálogo antes de que se muestre o antes de que se establezca el foco de entrada.

EndDialog no cierra el cuadro de diálogo inmediatamente, sino que establece una marca que dirige el cuadro de diálogo para que se cierre tan pronto como vuelva el controlador de mensajes actual.

Ejemplo

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

Llame a la función miembro GetDefID para obtener el identificador del control de botón de inserción predeterminado de un cuadro de diálogo.

DWORD GetDefID() const;

Valor devuelto

Un valor de 32 bits (DWORD). Si el botón de inserción predeterminado tiene un valor de identificador, la palabra de orden superior contiene DC_HASDEFID y la palabra de orden inferior, el valor del identificador. Si el botón de inserción predeterminado no tiene un valor de identificador, el valor devuelto es 0.

Comentarios

Esto suele ser un botón Aceptar.

CDialog::GotoDlgCtrl

Mueve el foco al control especificado en el cuadro de diálogo.

void GotoDlgCtrl(CWnd* pWndCtrl);

Parámetros

pWndCtrl
Identifica la ventana (control) que va a recibir el foco.

Comentarios

Para obtener un puntero al control (ventana secundaria) para pasarlo como pWndCtrl, llame a la función miembro CWnd::GetDlgItem, que devuelve un puntero a un objeto CWnd.

Ejemplo

Vea el ejemplo de CWnd::GetDlgItem.

CDialog::InitModalIndirect

Llame a esta función miembro para inicializar un objeto de cuadro de diálogo modal mediante una plantilla de cuadro de diálogo que haya construido en memoria.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parámetros

lpDialogTemplate
Apunta a la memoria que contiene la plantilla de cuadro de diálogo utilizada para crear el cuadro de diálogo. Esta plantilla tiene la forma de una estructura DLGTEMPLATE y contiene información sobre los controles, como se describe en Windows SDK.

hDialogTemplate
Contiene un identificador de la memoria global que contiene una plantilla de cuadro de diálogo. Esta plantilla tiene la forma de una estructura DLGTEMPLATE y contiene datos de cada control del cuadro de diálogo.

pParentWnd
Apunta al objeto de ventana primaria o propietaria (de tipo CWnd) al que pertenece el objeto de cuadro de diálogo. Si es NULL, la ventana primaria del objeto de cuadro de diálogo se establece en la ventana principal de la aplicación.

lpDialogInit
Apunta a un recurso DLGINIT.

Valor devuelto

Distinto de cero si el objeto de cuadro de diálogo se creó e inicializó correctamente; de lo contrario, 0.

Comentarios

Para crear un cuadro de diálogo modal indirectamente, asigne primero un bloque global de memoria y rellénelo con la plantilla de cuadro de diálogo. Luego, llame al constructor CDialog vacío para construir el objeto de cuadro de diálogo. Tras ello, llame a InitModalIndirect para almacenar el identificador en la plantilla de cuadro de diálogo en memoria. El cuadro de diálogo de Windows se crea y se muestra más adelante, cuando se llame a la función miembro DoModal.

Los cuadros de diálogo que contienen controles ActiveX requieren información adicional proporcionada en un recurso DLGINIT.

CDialog::MapDialogRect

Llame para convertir las unidades de cuadro de diálogo de un rectángulo en unidades de pantalla.

void MapDialogRect(LPRECT lpRect) const;

Parámetros

lpRect
Apunta a una estructura RECT o a un objeto CRect que contiene las coordenadas del cuadro de diálogo que se va a convertir.

Comentarios

Las unidades de cuadro de diálogo se indican en términos de la unidad base actual del cuadro de diálogo derivada del ancho medio y alto de caracteres en la fuente utilizada para el texto del cuadro de diálogo. Una unidad horizontal es una cuarta parte de la unidad de ancho base del cuadro de diálogo y una unidad vertical es una octava de la unidad de alto base del cuadro de diálogo.

La función de Windows GetDialogBaseUnits devuelve información de tamaño de la fuente del sistema, pero puede especificar una fuente diferente para cada cuadro de diálogo si usa el estilo DS_SETFONT en el archivo de definición de recursos. La función de Windows MapDialogRect usa la fuente adecuada para este cuadro de diálogo.

La función miembro MapDialogRect reemplaza las unidades de cuadro de diálogo en lpRect por unidades de pantalla (píxeles) para que el rectángulo se pueda usar para crear un cuadro de diálogo o colocar un control dentro de un cuadro.

CDialog::NextDlgCtrl

Mueve el foco al siguiente control del cuadro de diálogo.

void NextDlgCtrl() const;

Comentarios

Si el foco está en el último control del cuadro de diálogo, se mueve al primer control.

CDialog::OnCancel

El marco llama a este método cuando el usuario hace clic en Cancelar o presiona la tecla Esc en un cuadro de diálogo modal o no modal.

virtual void OnCancel();

Comentarios

Invalide este método para realizar acciones (como restaurar datos antiguos) cuando un usuario cierra el cuadro de diálogo haciendo clic en Cancelar o presionando la tecla Esc. El valor predeterminado cierra un cuadro de diálogo modal llamando a EndDialog y haciendo que DoModal devuelva IDCANCEL.

Si implementa el botón Cancelar en un cuadro de diálogo no modal, debe invalidar el método OnCancel y llamar a DestroyWindow dentro de él. No llame al método de clase base, ya que llama a EndDialog, lo que hará que el cuadro de diálogo sea invisible, pero no lo destruirá.

Nota:

Este método no se puede invalidar cuando se usa un objeto CFileDialog en un programa compilado en Windows XP. Para obtener más información sobre CFileDialog, vea CFileDialog (Clase).

Ejemplo

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OnInitDialog

Se llama a este método en respuesta al mensaje WM_INITDIALOG.

virtual BOOL OnInitDialog();

Valor devuelto

Especifica si la aplicación ha establecido el foco de entrada en uno de los controles del cuadro de diálogo. Si OnInitDialog devuelve un valor distinto de cero, Windows establece el foco de entrada en la ubicación predeterminada, el primer control del cuadro de diálogo. La aplicación solo puede devolver 0 si ha establecido explícitamente el foco de entrada en uno de los controles del cuadro de diálogo.

Comentarios

Windows envía el mensaje WM_INITDIALOG al cuadro de diálogo durante las llamadas a Create, a CreateIndirect o a DoModal, que se producen inmediatamente antes de que el cuadro de diálogo se muestre.

Invalide este método si desea realizar un procesamiento especial cuando el cuadro de diálogo se inicialice. En la versión invalidada, primero llame a la clase base OnInitDialog, pero omita su valor devuelto. Normalmente, se devolverá TRUE del método invalidado.

Windows llama a la función OnInitDialog mediante el procedimiento de cuadro de diálogo global estándar común a todos los cuadros de diálogo de la biblioteca de Microsoft Foundation Class. No llama a esta función a través de la asignación de mensajes y, por lo tanto, no necesita una entrada de asignación de mensajes para este método.

Nota:

Este método no se puede invalidar cuando se usa un objeto CFileDialog en un programa compilado en Windows Vista o en sistemas operativos posteriores. Para obtener más información sobre los cambios en CFileDialog en Windows Vista y versiones posteriores, vea CFileDialog (Clase).

Ejemplo

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

Se llama cuando el usuario hace clic en el botón Aceptar (el botón con el identificador IDOK).

virtual void OnOK();

Comentarios

Invalide este método para realizar acciones cuando se active el botón Aceptar. Si el cuadro de diálogo incluye la validación e intercambio automáticos de datos, la implementación predeterminada de este método valida los datos del cuadro de diálogo y actualiza las variables adecuadas en la aplicación.

Si implementa el botón Aceptar en un cuadro de diálogo no modal, debe invalidar el método OnOK y llamar a DestroyWindow dentro de él. No llame al método de clase base, ya que llama a EndDialog, lo que hace que el cuadro de diálogo sea invisible, pero no lo destruye.

Nota:

Este método no se puede invalidar cuando se usa un objeto CFileDialog en un programa compilado en Windows XP. Para obtener más información sobre CFileDialog, vea CFileDialog (Clase).

Ejemplo

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

Especifica la fuente que un control de cuadro de diálogo utilizará al dibujar texto.

Virtual void OnSetFont(CFont* pFont);

Parámetros

pFont
[in] Especifica un puntero a la fuente que se usará como fuente predeterminada en todos los controles de este cuadro de diálogo.

Comentarios

El cuadro de diálogo usará la fuente especificada como valor predeterminado en todos sus controles.

Normalmente, el editor de cuadros de diálogo establece la fuente del cuadro de diálogo como parte del recurso de plantilla de cuadro de diálogo.

Nota:

Este método no se puede invalidar cuando se usa un objeto CFileDialog en un programa compilado en Windows Vista o en sistemas operativos posteriores. Para obtener más información sobre los cambios en CFileDialog en Windows Vista y versiones posteriores, vea CFileDialog (Clase).

CDialog::PrevDlgCtrl

Establece el foco en el control anterior del cuadro de diálogo.

void PrevDlgCtrl() const;

Comentarios

Si el foco está en el primer control del cuadro de diálogo, se mueve al último control del cuadro de diálogo.

CDialog::SetDefID

Cambia el control de botón de inserción predeterminado de un cuadro de diálogo.

void SetDefID(UINT nID);

Parámetros

Nid
Especifica el identificador del control de botón de inserción que se convertirá en el valor predeterminado.

CDialog::SetHelpID

Establece un identificador de ayuda contextual del cuadro de diálogo.

void SetHelpID(UINT nIDR);

Parámetros

nIDR
Especifica el identificador de ayuda contextual.

Consulte también

Ejemplo de MFC DLGCBR32
Ejemplo de MFC DLGTEMPL
CWnd (clase)
Gráfico de jerarquías