Compartir a través de


Tutorial: Adición de un CTaskDialog a una aplicación

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.

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

  2. Llámelo MyProject.

  3. Usa el Explorador de Soluciones en para abrir MyProject.cpp.

  4. Agregue #include "afxtaskdialog.h" después de la lista de inclusión.

  5. Busque el método CMyProjectApp::InitInstance. Inserte las siguientes líneas de código antes de la instrucción return TRUE;. Este código crea las cadenas que usamos en el cuadro de mensaje de Windows o en el CTaskDialog.

    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.

  1. Vaya al de vista de recursos de a través de Ver>otras vistas de recursos de Windows>.

  2. Expanda la vista de recursos a la carpeta tabla de cadenas. Expándalo y haga doble clic en la tabla de cadenas .

  3. 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 en Command Line 1.

  4. Agregue otra nueva entrada. Cambie el identificador a TEMP_LINE2. Establezca la etiqueta en Command Line 2.

  5. Vuelva a MyProject.cpp.

  6. En la función CMyProjectApp::InitInstance(), 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.");
    
  7. 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

  1. Abra el archivo MyProject.cpp.

  2. En la función CMyProjectApp::InitInstance(), dirígete hasta el corchete de cierre de la instrucción if (CTaskDialog::IsSupported()).

  3. Inserte el código siguiente inmediatamente antes del corchete de cierre de la instrucción if (antes del bloque else):

    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