Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué es un cuadro de diálogo en Windows XP? ¿De qué elementos se compone?

¿Qué es un cuadro de diálogo en Windows XP? ¿De qué elementos se compone?

Cuadro de diálogo

Ventana secundaria que contiene botones y opciones que le permiten completar un comando o tarea específica.

Existe una diferencia entre un cuadro de diálogo y una ventana. No tiene botón de maximizar ni de minimizar y no puede cambiar la forma ni el tamaño.

Cuadro de diálogo: Es un. forma de comunicación persona-computadora. Los usuarios pueden cuadro de diálogo, la computadora ejecutará el comando correspondiente. Hay botones de opción, casillas de verificación, etc. en el cuadro de diálogo.

La composición del cuadro de diálogo

El cuadro de diálogo consta principalmente de dos partes.

Recursos de diálogo: puede utilizar el editor de diálogo para configurar la interfaz del cuadro de diálogo, como el tamaño, la posición, el estilo del cuadro de diálogo, el tipo y la posición de los controles en el cuadro de diálogo, etc. Además, también podemos crear dinámicamente recursos de diálogo durante la ejecución del programa.

Clase de diálogo: en un programa MFC, puede utilizar un asistente para ayudar a los usuarios a crear una clase asociada con el recurso de diálogo. Normalmente esta clase se deriva de la clase CDialog.

Tipos de cuadros de diálogo

Los cuadros de diálogo se pueden dividir en dos tipos: cuadros de diálogo modo y cuadros de diálogo no modo.

CDialog

Para facilitar la operación de los cuadros de diálogo, MFC proporciona a los usuarios la clase CDialog. Es la clase base para mostrar cuadros de diálogo en la pantalla. Está estrechamente relacionada con los recursos de los cuadros de diálogo. Proporciona una interfaz para administrar cuadros de diálogo y encapsula algunas operaciones relacionadas con los diálogos.

Se puede ver en el código de definición de CDialog que Cdialog proporciona dos sistemas para construir objetos Cdialog, respectivamente para cuadros de diálogo modales y cuadros de diálogo no modal.

El proceso de construcción del objeto del cuadro de diálogo no modal primero llama al constructor predeterminado para generar el objeto del cuadro de diálogo y luego llama a la función Crear para crear e inicializar el cuadro de diálogo. La función Crear en la clase Cdialog tiene dos prototipos de función:

BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL

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

Entre ellos,

El parámetro lpszTemplateName es el identificador del recurso de plantilla del cuadro de diálogo no modal

El parámetro nIDTemplat es el identificador del cuadro de diálogo; recurso de plantilla. Generalmente comienza con IDD_ (como IDD_DIALOG1);

El parámetro pParentWnd es un puntero a la ventana principal a la que pertenece el objeto de diálogo (si es NULL, significa que la ventana principal del El objeto de diálogo es la ventana principal de la aplicación). Si desea que su ventana principal en el cuadro de diálogo se muestre inmediatamente después de su creación, debe configurar la plantilla del cuadro de diálogo en el formato WS_VISIBLE. De lo contrario, es necesario llamar a la función ShowWindow para mostrar el cuadro de diálogo.

Para un cuadro de diálogo modal, su constructor es el siguiente:

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

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

La descripción del parámetro del constructor es similar a la función Crear del cuadro de diálogo no modal. En un cuadro de diálogo modal, después de crear el objeto del cuadro de diálogo, el cuadro de diálogo se puede mostrar llamando a la función DoModal.

Generalmente, ya sea un cuadro de diálogo modal o no modal, hay dos botones, Aceptar y CANCELAR. Los cuadros de diálogo les proporcionan las funciones de procesamiento de mensajes predeterminadas OnOk y OnCancel. Llamar a ambas funciones cerrará el cuadro de diálogo.

La diferencia es que la función OnOk predeterminada actualizará los datos del cuadro de diálogo antes de cerrarlo, mientras que la función OnCancel predeterminada no actualiza los datos del cuadro de diálogo.

Cuando la clase CDialog detecta la tecla Aceptar o Cancelar, llama a la función ::EndDialog. Aunque la función EndDialog finaliza la aplicación del cuadro de diálogo, no elimina el objeto del cuadro de diálogo ni libera la memoria. Esto no es un problema para los cuadros de diálogo modales, que no duran mucho y generalmente los creamos en la pila, pero los cuadros de diálogo no modal, que duran más y generalmente los creamos en la pila, son diferentes. mismo antes de desaparecer. Por lo tanto, en la mayoría de los casos, necesitamos sobrecargar las funciones OnOK y OnCancel en el cuadro de diálogo no modal y agregar la función DestroyWindows para eliminarlo por completo.

Mecanismo de verificación e intercambio de datos de diálogo

En VC, todas las funciones de diálogo se implementan utilizando código C++ y no utiliza recursos especiales ni métodos "peculiares", pero pueden hacerlo. Realice bien la interacción entre usuarios y aplicaciones. La clave aquí radica en el mecanismo de verificación e intercambio de datos de diálogo ampliamente utilizado en las aplicaciones de diálogo.

El intercambio de datos de diálogo (DDX, Dialog Data Exchange) se utiliza para inicializar controles en el cuadro de diálogo y obtener la entrada de datos del usuario, mientras que la validación de datos de diálogo (DDV, validación de datos de diálogo) se utiliza para verificar la validez del diálogo. de entrada de datos en el cuadro. MFC proporciona una función virtual de sobrecarga: DoDataExchange en cada clase de diálogo para implementar el intercambio y la verificación de datos del diálogo.

Intercambio de datos de diálogo

Si utiliza el mecanismo DDX, el valor inicial de la variable miembro del objeto de diálogo generalmente se establece en el programa OnInitDialog o en el constructor del cuadro de diálogo. Antes de que el cuadro de diálogo esté a punto de mostrarse, el mecanismo DDX del marco de la aplicación pasa los valores de las variables miembro a los controles del cuadro de diálogo. Cuando el cuadro de diálogo se muestra en respuesta a DoModal o Create, el control del cuadro de diálogo. "mostrar" estos valores. De forma predeterminada, la función OnInitDialog en la clase Cdialog llamará a la función miembro UpdateData de la clase CWnd para inicializar los controles en el cuadro de diálogo. El prototipo de la función UpdateData es el siguiente:

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

El parámetro de la función es TRUE, lo que significa los datos en el cuadro de diálogo y sus controles. se pasan a los miembros en la variable de código del programa;

El parámetro de función es FALSO, lo que significa que el estado de los datos en la clase se transfiere al cuadro de diálogo y sus controles.

Cuando el usuario sobrecarga la función DoDataExchange, se especifica una llamada a la función DDX para cada miembro de datos (control).

Verificación de datos de diálogo

Además de llamar a los parámetros DDX para especificar el intercambio de datos, los usuarios también pueden usar la función DDV para verificar los datos del cuadro de diálogo. Después de llamar a la función DDX del control, se debe llamar inmediatamente a la función DDV del control. Los prototipos de la mayoría de las funciones DDV se muestran a continuación.

DDV_MinMaxCustom(pDX, Data, MinData, MaxData);

Entre ellos, el parámetro pDX es un puntero al objeto CdataExchange y el parámetro Data almacena los datos a verificar. Los dos últimos parámetros se utilizan para personalizar el rango de datos.

Clase CdataExchange

Si solo necesita utilizar datos del cuadro de diálogo, generalmente no es necesario comprender el contenido principal del intercambio/validación de datos. Pero después de comprender la esencia del intercambio y la verificación de datos, los usuarios pueden escribir su propio código de verificación e intercambio de datos y personalizar DDX/DDV.

Control del cuadro de diálogo

El control es un Es también un tipo especial de ventana que interactúa con un objeto para completar la entrada o manipular operaciones de datos. Los controles suelen aparecer en cuadros de diálogo o barras de herramientas.

Windows proporciona una variedad de controles en las aplicaciones MFC, los controles que se pueden usar generalmente se pueden dividir en tres tipos.

1) Controles comunes de Windows: incluidos controles de edición, botones, cuadros de lista, cuadros combinados, controles deslizantes, etc., y también incluye controles descritos por el propietario.

2) Control ActiveX: Puede usarse en cuadros de diálogo o páginas web HTML.

3) Otras clases de control proporcionadas por MFC

Introducimos principalmente el primer tipo de control: controles comunes de Windows.

El sistema operativo Windows proporciona una variedad de controles comunes de Windows. Todos estos objetos de control son programables. El Editor de cuadros de diálogo de Visual C++ admite la adición de estos objetos de control al cuadro de diálogo. Los usuarios pueden ver estos controles comunes de Windows en el editor del cuadro de diálogo de la caja de herramientas. Para admitir mejor los controles comunes de Windows, MFC proporciona una variedad de clases de control. Cada clase de control encapsula un tipo de control y proporciona las funciones miembro correspondientes para administrar los controles operativos.