Partager via


Procédure pas - à - pas : ajouter un CTaskDialog à une application

Cette procédure pas-à-pas présente CTaskDialog, classe et explique comment en ajouter à votre application.

Le CTaskDialog est une boîte de dialogue de tâche qui remplace le message Windows dans Windows Vista. Le CTaskDialog améliore la zone de message et ajoute la fonctionnalité. Le message Windows est toujours pris en charge dans Visual Studio.

Notes

Les versions de Windows antérieures à Windows Vista ne prennent pas en charge CTaskDialog.Vous devez programmer une autre option de la boîte de dialogue si vous souhaitez afficher un message à un utilisateur qui exécute l'application sur une version antérieure de Windows.Vous pouvez utiliser la méthode statique CTaskDialog::IsSupported pour déterminer à l'exécution si l'ordinateur d'un utilisateur peut afficher CTaskDialog.En outre, CTaskDialog est disponible uniquement lorsque votre application est construite avec la bibliothèque Unicode.

Le CTaskDialog prend en charge plusieurs éléments facultatifs pour collecter et afficher des informations. Par exemple, CTaskDialog peut afficher des liens de commande, des boutons personnalisés, des icônes personnalisées, et un pied de page. Le CTaskDialog a plusieurs méthodes qui vous permettent d'interroger l'état de la boîte de dialogue de tâche pour déterminer les éléments facultatifs l'utilisateur a sélectionné.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

  • Visual Studio 2010

  • Windows Vista

Remplacer un message Windows par un CTaskDialog

La procédure suivante montre l'utilisation la plus basique de CTaskDialog, qui doit remplacer le message Windows. Cet exemple remplace également l'icône associée à la boîte de dialogue de tâche. La modification de l'icône rend l'apparence du CTaskDialog identique au message Windows.

Remplacer un message Windows par un CTaskDialog

  1. Créez un projet d'application de MFC avec les paramètres par défaut. Appelez-le MyProject.

  2. Utilisez l'Explorateur de solutions pour ouvrir le fichier MyProject.cpp.

  3. Ajoutez #include "afxtaskdialog.h" après la liste d'includes.

  4. Trouvez la méthode CMyProjectApp::InitInstance. Insérez les lignes de code suivantes avant l'instruction return TRUE;. Ce code crée les chaînes que nous utilisons dans le message Windows ou dans CTaskDialog.

    CString message("My message to the user");
    CString dialogTitle("My Task Dialog title");
    CString emptyString;
    
  5. Ajoutez le code suivant après la ligne de code de l'étape 4. Ce code garantit que l'ordinateur de l'utilisateur prend en charge CTaskDialog. Si le dialogue n'est pas pris en charge, l'application affiche un message Windows à la place.

    if (CTaskDialog::IsSupported())
    {
    
    }
    else
    {
       AfxMessageBox(message);
    }
    
  6. Insérez le code suivant entre parenthèses après l'instruction if à l'étape 5. Ce code crée le CTaskDialog.

    CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
    
  7. A la ligne suivante, ajoutez le code suivant. Ce code initialise l'icône d'avertissement.

    taskDialog.SetMainIcon(TD_WARNING_ICON);
    
  8. A la ligne suivante, ajoutez le code suivant. Ce code affiche la boîte de dialogue de tâche.

    taskDialog.DoModal();
    

Vous pouvez omettre l'étape 7 si vous ne souhaitez pas que CTaskDialog affiche les mêmes icônes que le message Windows. Si vous omettez cette étape, CTaskDialog n'a aucune icône lorsque l'application effectue l'affichage.

Compilez et exécutez l'application. L'application affiche la boîte de dialogue de tâche lorsqu'elle démarre.

Ajouter des fonctionnalités au CTaskDialog

La procédure suivante explique comment ajouter des fonctionnalités au CTaskDialog que vous avez créée dans la procédure précédente. L'exemple de code montre comment exécuter l'instruction spécifique en fonction des sélections de l'utilisateur.

Pour ajouter des fonctionnalités au CTaskDialog

  1. Accédez à l'Affichage des ressources. Si vous ne voyez pas l'Affichage des ressources, vous pouvez l'ouvrir dans le menu Affichage.

  2. Développez l'Affichage des ressources jusqu'à ce que vous puissiez sélectionner le dossier Table de chaînes. Développez le et double-cliquez sur l'entrée Table de chaînes.

  3. Faites défiler vers le bas de la table de chaînes et ajoutez une nouvelle entrée. Remplacez l'ID par TEMP_LINE1. Définissez la légende dans la ligne de commande 1.

  4. Ajoutez une autre entrée. Remplacez l'ID par TEMP_LINE2. Définissez la légende dans la ligne de commande 2.

  5. Accédez à MyProject.cpp.

  6. Après CString emptyString;, ajoutez le code suivante.

    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. Trouvez l'instruction taskDialog.DoModal() et remplacez-la par le code suivant. Ce code met à jour la boîte de dialogue de tâche et ajoute de nouveaux contrôles :

    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");
    
  8. Ajoutez la ligne de code suivante qui affiche la boîte de dialogue de tâche à l'utilisateur et récupère la sélection de l'utilisateur :

    INT_PTR result = taskDialog.DoModal();
    
  9. Insérez le code suivant après l'appel à taskDialog.DoModal(). Cette section de code traite l'entrée de l'utilisateur :

    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;
    }
    

Dans le code à l'étape 9, remplacez les commentaires qui démarrent par PROCESS IF avec le code à exécuter dans les conditions spécifiées.

Compilez et exécutez l'application. L'application affiche la boîte de dialogue de tâche qui utilise les nouveaux contrôles et informations supplémentaires.

Affichage d'un CTaskDialog sans créer un objet de CTaskDialog

La procédure suivante montre comment afficher un CTaskDialog sans créer d'abord un objet CTaskDialog. Cet exemple poursuit les procédures précédentes.

Afficher un CTaskDialog sans créer un objet de CTaskDialog

  1. Ouvrez le fichier de MyProject.cpp s'il n'est pas déjà ouvert.

  2. Naviguez jusqu'au crochet fermant pour l'instruction if (CTaskDialog::IsSupported()).

  3. Insérez le code suivant immédiatement avant le crochet fermant de l'instruction if (avant le bloc else ) :

    HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
    

Compilez et exécutez l'application. L'application affiche les boîtes de dialogue à deux tâches. La première boîte de dialogue est de la procédure pour ajouter des fonctionnalités à CTaskDialog; la deuxième boîte de dialogue est de la dernière procédure.

Ces exemples ne présentent pas toutes les options disponibles pour CTaskDialog, mais peuvent vous aider à commencer. Consultez CTaskDialog, classe opur une description complète de la classe.

Voir aussi

Référence

CTaskDialog, classe

CTaskDialog::CTaskDialog

Concepts

boîtes de dialogue