Tutorial: Agregar una clase CTaskDialog a una aplicación
Este tutorial presenta CTaskDialog (Clase) y muestra cómo agregar una a la aplicación.
CTaskDialog es un cuadro de diálogo de tarea que reemplaza el cuadro de mensaje de Windows en Windows Vista. CTaskDialog mejora el cuadro de mensaje original y agrega funcionalidad. El cuadro de mensaje de Windows se admite todavía en Visual Studio.
Nota
Las versiones de Windows anteriores a Windows Vista no admiten CTaskDialog.Debe programar una opción del cuadro de diálogo alternativa si desea mostrar un mensaje a un usuario que ejecute la aplicación en una versión anterior de Windows.Puede utilizar el método estático CTaskDialog::IsSupported para determinar en tiempo de ejecución si el equipo de un usuario puede mostrar CTaskDialog.Además, CTaskDialog sólo está disponible cuando la aplicación se compila con la biblioteca de Unicode.
CTaskDialog admite varios elementos opcionales que recopilen y muestran información. Por ejemplo, CTaskDialog puede mostrar vínculos de comando, los botones personalizados, los iconos personalizados, y un pie de página. CTaskDialog también tiene varios métodos que le permiten ver el estado del cuadro de diálogo de tarea para determinar qué elementos opcionales seleccionó el usuario.
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
Visual Studio 2010
Windows Vista
Reemplazar un cuadro de mensaje de Windows con un CTaskDialog
El procedimiento siguiente muestra el uso más básico de CTaskDialog, que es reemplazar el cuadro de mensaje de Windows. Este ejemplo también cambia el icono asociado al cuadro de diálogo de tarea. Cambiando el icono hace que CTaskDialog aparece idéntico al cuadro de mensaje de Windows.
Para reemplazar un cuadro de mensaje de Windows con un CTaskDialog
Cree un nuevo proyecto de aplicación MFC con la configuración predeterminada. Denomínelo MyProject.
Utilice Explorador de soluciones para abrir el archivo MyProject.cpp.
Agregue #include "afxtaskdialog.h" después de que la lista de incluye.
Busque el método CMyProjectApp::InitInstance. Inserte las líneas de código siguientes antes de la instrucción de return TRUE; . Este código crea las cadenas que utilizamos en el cuadro de mensaje de Windows o en CTaskDialog.
CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString;
Agregue el código siguiente después del código del paso 4. Este código garantiza que el equipo del usuario admite CTaskDialog. Si el diálogo no se admite, la aplicación muestra un cuadro de mensaje de Windows en su lugar.
if (CTaskDialog::IsSupported()) { } else { AfxMessageBox(message); }
Inserte el código siguiente entre corchetes después de la instrucción de if del paso 5. Este código crea CTaskDialog.
CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
En la línea siguiente, agregue el código siguiente. Este código establece el icono de advertencia.
taskDialog.SetMainIcon(TD_WARNING_ICON);
En la línea siguiente, agregue el código siguiente. Este código muestra el cuadro de diálogo de tarea.
taskDialog.DoModal();
Puede omitir el paso 7 si no desea CTaskDialog para mostrar el mismo icono que el cuadro de mensaje de Windows. Si omite este paso, CTaskDialog no tiene ningún icono cuando la aplicación lo muestra.
Compile y ejecute la aplicación. La aplicación muestra el cuadro de diálogo de tarea después de iniciarse.
Agregar funcionalidad al CTaskDialog
El procedimiento siguiente muestra cómo agregar funcionalidad a CTaskDialog que creó en el procedimiento anterior. El código de ejemplo se muestra cómo ejecutar instrucciones concretas según las selecciones del usuario.
Para agregar funcionalidad a CTaskDialog
Navegue a vista de recursos. Si no puede ver vista de recursos, puede abrirlo en el menú de Visualización .
Expanda vista de recursos hasta que pueda seleccionar la carpeta de Tabla de cadenas . Expanda y haga doble clic en la entrada de Tabla de cadenas .
Desplácese a la parte inferior de la tabla de cadenas y agregue una nueva entrada. Cambie el identificador a TEMP_LINE1. Establezca la leyenda a la línea de comandos 1.
Agregue otra nueva entrada. Cambie el identificador a TEMP_LINE2. Establezca la leyenda a la línea de comandos 2.
Navegue a MyProject.cpp.
Después de CString emptyString;, agregue el código siguiente:
CString expandedLabel("Hide extra information"); CString collapsedLabel("Show extra information"); CString expansionInfo("This is the additional information to the user,\nextended over two lines.");
Busque la instrucción de taskDialog.DoModal() y reemplace esa instrucción con el código siguiente. Este código actualiza el cuadro de diálogo de tarea y agrega nuevos controles:
taskDialog.SetMainInstruction(L"Warning"); taskDialog.SetCommonButtons(TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON); taskDialog.LoadCommandControls(TEMP_LINE1, TEMP_LINE2); taskDialog.SetExpansionArea(expansionInfo, collapsedLabel, expandedLabel); taskDialog.SetFooterText(L"This is the a small footnote to the user"); taskDialog.SetVerificationCheckboxText(L"Remember your selection");
Agregue la siguiente línea de código que muestra el cuadro de diálogo de tarea al usuario y recupere la selección del usuario:
INT_PTR result = taskDialog.DoModal();
Inserte el código siguiente después de la llamada a taskDialog.DoModal(). Esta sección de código procesa la entrada de usuario:
if (taskDialog.GetVerificationCheckboxState() ) { // PROCESS IF the user selects the verification checkbox } switch (result) { case TEMP_LINE1: // PROCESS IF the first command line break; case TEMP_LINE2: // PROCESS IF the second command line break; case IDYES: // PROCESS IF the user clicks yes break; case IDNO: // PROCESS IF the user clicks no break; case IDCANCEL: // PROCESS IF the user clicks cancel break; default: // This case should not be hit because closing the dialog box results in IDCANCEL break; }
En el código del paso 9, reemplace los comentarios que comienzan con PROCESO IF con el código que desea ejecutar en condiciones especificadas.
Compile y ejecute la aplicación. La aplicación muestra el cuadro de diálogo de tarea que utiliza los nuevos controles y la información adicional.
Mostrar un CTaskDialog Sin que crea un objeto CTaskDialog
El siguiente procedimiento muestra cómo mostrar CTaskDialog sin crear primero un objeto de CTaskDialog . Este ejemplo sigue los procedimientos anteriores.
Para mostrar un CTaskDialog Sin que crea un objeto CTaskDialog
Abra el archivo de MyProject.cpp si no está abierto.
Navegue hasta el corchete de cierre para la instrucción de if (CTaskDialog::IsSupported()) .
Inserte el código siguiente inmediatamente antes de que el corchete de cierre de la instrucción de if (antes de else bloqueado):
HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
Compile y ejecute la aplicación. La aplicación muestra dos cuadros de diálogo de tarea. El primer cuadro de diálogo es de para agregar funcionalidad al procedimiento CTaskDialog; el segundo cuadro de diálogo es el último procedimiento.
Estos ejemplos no muestran todas las opciones disponibles para CTaskDialog, pero deben ayudarle a empezar. Vea CTaskDialog (Clase) para obtener una descripción completa de la clase.