MFC - Cuadros de diálogo

En este capítulo, cubriremos los cuadros de diálogo. Las aplicaciones para Windows se comunican frecuentemente con el usuario a través de cuadros de diálogo.CDialog classproporciona una interfaz para administrar cuadros de diálogo. El editor de diálogo de Visual C ++ facilita el diseño de cuadros de diálogo y la creación de sus recursos de plantilla de diálogo.

  • La creación de un objeto de diálogo es una operación de dos fases:

    • Construya el objeto de diálogo.

    • Cree la ventana de diálogo.

Veamos un ejemplo simple creando un nuevo proyecto Win32.

Step 1 - Abra Visual Studio y haga clic en la opción de menú Archivo → Nuevo → Proyecto.

Step 2 - Ahora puede ver el cuadro de diálogo Nuevo proyecto.

Step 3 - Desde el panel izquierdo, seleccione Plantillas → Visual C ++ → Win32.

Step 4 - En el panel central, seleccione Proyecto Win32.

Step 5- Ingrese el nombre del proyecto 'MFCDialogDemo' en el campo Nombre y haga clic en Aceptar para continuar. Verá el siguiente cuadro de diálogo.

Step 6 - Haga clic en Siguiente.

Step 7 - Seleccione las opciones que se muestran en el cuadro de diálogo anterior y haga clic en Finalizar.

Step 8 - Se crea un proyecto vacío.

Step 9 - Para convertirlo en un proyecto MFC, haga clic con el botón derecho en el proyecto y seleccione Propiedades.

Step 10 - En la sección izquierda, haga clic en Propiedades de configuración → General.

Step 11 - Seleccione la opción Usar MFC en DLL compartida en la sección Valores predeterminados del proyecto y haga clic en Aceptar.

Step 12 - Agregue un nuevo archivo fuente.

Step 13 - Haga clic con el botón derecho en su proyecto y seleccione Agregar → Nuevo elemento.

Step 14 - En la sección Plantillas, haga clic en Archivo C ++ (.cpp)

Step 15 - Establezca el nombre como ejemplo y haga clic en Agregar.

Step 16 - Para crear una aplicación, necesitamos agregar una clase y derivarla de la CWinApp de MFC.

#include <afxwin.h>

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};

Creación de cuadro de diálogo

Step 1 - Para crear un cuadro de diálogo, haga clic con el botón derecho en la carpeta Archivos de recursos en el explorador de soluciones y seleccione Agregar → Recurso.

Step 2 - En el cuadro de diálogo Agregar recurso, seleccione Diálogo y haga clic en Nuevo.

Step 3 - Un cuadro de diálogo requiere cierta preparación antes de crearlo mediante programación.

Step 4 - Primero se puede crear manualmente un cuadro de diálogo como un archivo de texto (en un archivo de recursos).

Step 5 - Ahora puede ver el archivo MFCDialogDemo.rc creado en Archivos de recursos.

Step 6- El archivo de recursos está abierto en el diseñador. Lo mismo se puede abrir como un archivo de texto. Haga clic con el botón derecho en el archivo de recursos y seleccione Abrir con.

Step 7 - Seleccione el editor de código fuente (texto) y haga clic en el botón Agregar.

Step 8 - Vuelva al diseñador y haga clic con el botón derecho en el cuadro de diálogo y seleccione Propiedades.

Step 9 - Debe elegir entre las muchas opciones.

Step 10- Como la mayoría de los otros controles, se debe identificar un cuadro de diálogo. El identificador (ID) de un cuadro de diálogo generalmente comienza con IDD_. Cambiemos el ID a IDD_EXAMPLE_DLG.

Ubicación del diálogo

Un cuadro de diálogo debe estar ubicado "físicamente" en una aplicación. Debido a que un cuadro de diálogo generalmente se crea como padre de otros controles, su ubicación depende de su relación con su ventana principal o con el escritorio.

Si mira y la ventana Propiedades, verá dos campos, Pos. X e Pos. Y.

  • X es la distancia desde el borde izquierdo del monitor hasta el borde izquierdo del cuadro de diálogo.

  • Y es la distancia desde el borde superior del monitor hasta el borde superior del cuadro de diálogo.

De forma predeterminada, estos campos se establecen en cero. También puede cambiar como se muestra arriba.

Si especifica estas dos dimensiones como 0, los bordes izquierdo y superior del cuadro de diálogo se establecerán de modo que el objeto aparezca en el centro-medio de la pantalla.

Dimensiones del cuadro de diálogo

Las dimensiones de un cuadro de diálogo se refieren a su ancho y su alto. Puede cambiar el tamaño del ancho y el alto con la ayuda del mouse en la ventana del diseñador.

Puede ver los cambios de ancho y alto en la barra de estado.

Métodos de cuadro de diálogo

La clase base utilizada para mostrar cuadros de diálogo en la pantalla es la clase CDialog. Para crear un cuadro de diálogo, necesitamos derivar una clase de CDialog. La propia clase CDialog proporciona tres constructores que son los siguientes:

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

Creemos otra clase CExampleDlg y la derivemos de CDialog. Implementaremos su destructor de constructor predeterminado como se muestra en el siguiente código.

class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
      ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

Necesitamos crear una instancia de este diálogo en el método CExample :: InitInstance () como se muestra en el siguiente código.

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   
   return TRUE;
}

Cuadros de diálogo modal

Hay dos tipos de cuadros de diálogo: modeless y modal. Los cuadros de diálogo modales y no modales se diferencian por el proceso utilizado para crearlos y mostrarlos.

Cuadro de diálogo Modeless

  • Para un cuadro de diálogo no modal, debe proporcionar su propio constructor público en su clase de diálogo.

  • Para crear un cuadro de diálogo no modal, llame a su constructor público y luego llame a la función miembro Crear del objeto de diálogo para cargar el recurso de diálogo.

  • Puede llamar a Create durante o después de la llamada al constructor. Si el recurso de diálogo tiene la propiedad WS_VISIBLE, el cuadro de diálogo aparece inmediatamente.

  • De lo contrario, debe llamar a su función miembro ShowWindow.

Diálogo modal

  • Para crear un cuadro de diálogo modal, llame a cualquiera de los dos constructores públicos declarados en CDialog.

  • A continuación, llame al objeto de diálogo DoModal función miembro para mostrar el cuadro de diálogo y administrar la interacción con él hasta que el usuario elija Aceptar o Cancelar.

  • Esta gestión de DoModal es lo que hace que el cuadro de diálogo sea modal. Para los cuadros de diálogo modales, DoModal carga el recurso de diálogo.

Step 1 - Para mostrar el cuadro de diálogo como modal, en el evento CExample :: InitInstance () llame al método DoModal () usando su variable de diálogo -

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}

Step 2 - Aquí está la implementación completa del archivo Example.cpp.

#include <afxwin.h>
#include "resource.h"

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};
   
class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
     ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}
CExample MyApp;

Step 3 - Cuando se compila y ejecuta el código anterior, verá el siguiente cuadro de diálogo.

Aplicaciones basadas en cuadros de diálogo

Microsoft Visual Studio proporciona una forma más sencilla de crear una aplicación que se basa principalmente en un cuadro de diálogo. Estos son los pasos para crear un proyecto de base de diálogo utilizando plantillas de proyecto disponibles en Visual Studio:

Step 1- Abra Visual Studio y haga clic en la opción de menú Archivo → Nuevo → Proyecto. Puede ver el cuadro de diálogo Nuevo proyecto.

Step 2 - Desde el panel izquierdo, seleccione Plantillas → Visual C ++ → MFC.

Step 3 - En el panel central, seleccione Aplicación MFC.

Step 4- Ingrese el nombre del proyecto 'MFCModalDemo' en el campo Nombre y haga clic en Aceptar para continuar. Verá el siguiente cuadro de diálogo.

Step 5 - Haga clic en Siguiente.

Step 6 - Seleccione las opciones que se muestran en el cuadro de diálogo anterior y haga clic en Siguiente.

Step 7 - Marque todas las opciones que elija tener en su cuadro de diálogo como Maximizar y Minimizar cuadros y haga clic en Siguiente.

Step 8 - Haga clic en Siguiente.

Step 9- Generará estas dos clases. Puede cambiar el nombre de las clases y hacer clic en Finalizar.

Step 10 - Ahora puede ver que el asistente de MFC crea este cuadro de diálogo y los archivos del proyecto de forma predeterminada.

Step 11 - Cuando ejecute esta aplicación, verá el siguiente resultado.