Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se presenta la clase CTaskDialog
y se muestra cómo agregarla a tu aplicación.
El CTaskDialog
es un cuadro de diálogo de tareas que reemplaza el cuadro de mensaje de Windows en Windows Vista o posterior. El CTaskDialog
mejora el cuadro de mensaje original y agrega funcionalidad. El cuadro de mensaje de Windows sigue siendo compatible con Visual Studio.
Nota
Las versiones de Windows anteriores a Windows Vista no admiten el CTaskDialog
. Debe programar una opción de cuadro de diálogo alternativa si desea mostrar un mensaje a un usuario que ejecuta la aplicación en una versión anterior de Windows. Puede usar el método estático CTaskDialog::IsSupported para determinar en tiempo de ejecución si el equipo de un usuario puede mostrar un CTaskDialog
. Además, el CTaskDialog
solo está disponible cuando la aplicación se compila con la biblioteca Unicode.
El CTaskDialog
admite varios elementos opcionales para recopilar y mostrar información. Por ejemplo, un CTaskDialog
puede mostrar vínculos de comandos, botones personalizados, iconos personalizados y pie de página. El CTaskDialog
también tiene varios métodos que permiten consultar el estado del cuadro de diálogo de tarea para determinar qué elementos opcionales seleccionó el usuario.
Prerrequisitos
Necesita los siguientes componentes para completar este tutorial:
- Visual Studio 2010 o posterior
- Windows Vista o posterior
Reemplazar el cuadro de mensaje de Windows por un CTaskDialog
A continuación se muestra el uso más básico de la CTaskDialog
, que es reemplazar el cuadro de mensaje de Windows. En este ejemplo también se cambia el icono asociado al cuadro de diálogo de tarea. Cambiar el icono hace que el CTaskDialog
parezca similar al cuadro de mensaje de Windows.
Use el asistente para aplicaciones de MFC para crear una aplicación de Microsoft Foundation Classes (MFC) con todas las opciones predeterminadas. Consulte Tutorial: Uso de los nuevos controles de shell de MFC para obtener instrucciones sobre cómo abrir el asistente para su versión de Visual Studio.
Llámelo MyProject.
Usa el Explorador de Soluciones en para abrir
MyProject.cpp
.Agregue
#include "afxtaskdialog.h"
después de la lista de inclusión.Busque el método
CMyProjectApp::InitInstance
. Inserte las siguientes líneas de código antes de la instrucciónreturn TRUE;
. Este código crea las cadenas que usamos en el cuadro de mensaje de Windows o en elCTaskDialog
.CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString; // Check whether the user's computer supports `CTaskDialog`. // If not, display a Windows message box instead. if (CTaskDialog::IsSupported()) { CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON); taskDialog.SetMainIcon(TD_WARNING_ICON); // Set the icon to be the same as the Windows message box taskDialog.DoModal(); } else { AfxMessageBox(message); }
Compile y ejecute la aplicación. La aplicación muestra el cuadro de diálogo de tarea después de que se inicie.
Agregar funcionalidad a CTaskDialog
A continuación se muestra cómo agregar funcionalidad a la CTaskDialog
que creó en el procedimiento anterior. El código de ejemplo muestra cómo ejecutar instrucciones específicas en función de las selecciones del usuario.
Vaya al de vista de recursos de a través de Ver>otras vistas de recursos de Windows>.
Expanda la vista de recursos a la carpeta tabla de cadenas. Expándalo y haga doble clic en la tabla de cadenas .
Desplácese hasta la parte inferior de la tabla de cadenas y agregue una nueva entrada. Cambie el identificador a
TEMP_LINE1
. Establezca la etiqueta enCommand Line 1
.Agregue otra nueva entrada. Cambie el identificador a
TEMP_LINE2
. Establezca la etiqueta enCommand Line 2
.Vuelva a
MyProject.cpp
.En la función
CMyProjectApp::InitInstance()
, después deCString 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
taskDialog.DoModal()
y reemplace esa instrucción por el código siguiente. Este código actualiza el cuadro de diálogo de tareas 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 a small footnote to the user"); taskDialog.SetVerificationCheckboxText(L"Remember your selection"); INT_PTR result = taskDialog.DoModal(); if (taskDialog.GetVerificationCheckboxState()) { // Your code 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; }
Compile y ejecute la aplicación. La aplicación muestra el cuadro de diálogo de tareas que usa los nuevos controles e información adicional.
Mostrar un CTaskDialog sin crear un objeto CTaskDialog
A continuación se muestra cómo mostrar un CTaskDialog
sin crear primero un objeto CTaskDialog
. En este ejemplo se continúan los procedimientos anteriores.
Para mostrar un CTaskDialog sin crear un objeto CTaskDialog
Abra el archivo
MyProject.cpp
.En la función
CMyProjectApp::InitInstance()
, dirígete hasta el corchete de cierre de la instrucciónif (CTaskDialog::IsSupported())
.Inserte el código siguiente inmediatamente antes del corchete de cierre de la instrucción
if
(antes del bloqueelse
):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 tareas. El primer cuadro de diálogo es del procedimiento Agregar funcionalidad al CTaskDialog; el segundo cuadro de diálogo es del procedimiento anterior.
Estos ejemplos no muestran todas las opciones disponibles para un CTaskDialog
, pero deben ayudarle a empezar. Consulte la clase CTaskDialog para obtener una descripción completa.
Consulte también
cuadros de diálogo
de clase CTaskDialog
CTaskDialog::CTaskDialog