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
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