Dela via


Genomgång: Lägga till en CTaskDialog i ett program

Den här genomgången introducerar klassen och visar hur du lägger till den CTaskDialog i ditt program.

Är CTaskDialog en aktivitetsdialogruta som ersätter Meddelanderutan i Windows i Windows Vista eller senare. Förbättrar CTaskDialog den ursprungliga meddelanderutan och lägger till funktioner. Windows-meddelanderutan stöds fortfarande i Visual Studio.

Anmärkning

Versioner av Windows tidigare än Windows Vista stöder inte CTaskDialog. Du måste programmera ett alternativt dialogrutealternativ om du vill visa ett meddelande för en användare som kör programmet i en tidigare version av Windows. Du kan använda den statiska metoden CTaskDialog::IsSupported för att vid körningstid avgöra om en användares dator kan visa en CTaskDialog. Dessutom är det CTaskDialog bara tillgängligt när ditt program skapas med Unicode-biblioteket.

Det CTaskDialog stöder flera valfria element för att samla in och visa information. En kan till exempel CTaskDialog visa kommandolänkar, anpassade knappar, anpassade ikoner och en sidfot. Har CTaskDialog också flera metoder som gör att du kan kontrollera statusen för aktivitetsdialogrutan och avgöra vilka valfria element användaren har valt.

Förutsättningar

Du behöver följande komponenter för att slutföra den här genomgången:

  • Visual Studio 2010 eller senare
  • Windows Vista eller senare

Ersätt Meddelanderutan i Windows med en CTaskDialog

Följande visar den mest grundläggande användningen av CTaskDialog, som är att ersätta Windows-meddelanderutan. I det här exemplet ändras även ikonen som är associerad med aktivitetsdialogrutan. Om du ändrar ikonen ser det CTaskDialog ut ungefär som i Meddelanderutan i Windows.

  1. Använd MFC-programguiden för att skapa ett MFC-program (Microsoft Foundation Classes) med alla standardinställningar. Mer information om hur du öppnar guiden för din version av Visual Studio finns i Genomgång: Använda de nya MFC Shell-kontrollerna .

  2. Kalla det MyProject.

  3. Använd Solution Explorer för att öppna MyProject.cpp.

  4. Lägg till #include "afxtaskdialog.h" efter listan med inkluderingar.

  5. Hitta metoden CMyProjectApp::InitInstance. Infoga följande kodrader före instruktionen return TRUE; . Den här koden skapar de strängar som vi använder i antingen Windows-meddelanderutan eller i 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);
    }
    

Kompilera och kör programmet. Programmet visar aktivitetsdialogrutan när det har startats.

Lägga till funktioner i CTaskDialog

Så här lägger du till funktionalitet i CTaskDialog som du skapade i föregående procedur. Exempelkoden visar hur du kör specifika instruktioner baserat på användarens val.

  1. Navigera till Resursvy via Visa>Andra fönster>Resursvy.

  2. Expandera resursvyn till mappen String Table . Expandera den och dubbelklicka på Strängtabell.

  3. Rulla längst ned i strängtabellen och lägg till en ny post. Ändra ID:t till TEMP_LINE1. Ange bildtexten till Command Line 1.

  4. Lägg till ytterligare en ny post. Ändra ID:t till TEMP_LINE2. Ange bildtexten till Command Line 2.

  5. Gå tillbaka till MyProject.cpp.

  6. I funktionen CMyProjectApp::InitInstance(), efter CString emptyString;, lägg till följande kod:

    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. Leta upp -instruktionen taskDialog.DoModal() och ersätt instruktionen med följande kod. Den här koden uppdaterar aktivitetsdialogrutan och lägger till nya kontroller:

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

Kompilera och kör programmet. Programmet visar den aktivitetsdialogruta som använder de nya kontrollerna och ytterligare information.

Visa en CTaskDialog utan att skapa ett CTaskDialog-objekt

Följande visar hur du visar en CTaskDialog utan att först skapa ett CTaskDialog objekt. Det här exemplet fortsätter de tidigare procedurerna.

Visa en CTaskDialog utan att skapa ett CTaskDialog-objekt

  1. Öppna MyProject.cpp-filen.

  2. I CMyProjectApp::InitInstance()-funktionen navigerar du till den avslutande hakparentesen för if (CTaskDialog::IsSupported())-instruktionen.

  3. Infoga följande kod omedelbart före den avslutande hakparentesen för if-instruktionen (före det else-blocket):

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

Kompilera och kör programmet. Programmet visar två aktivitetsdialogrutor. Den första dialogrutan är från proceduren För att lägga till funktioner i CTaskDialog . den andra dialogrutan är från föregående procedur.

De här exemplen visar inte alla tillgängliga alternativ för en CTaskDialog, men bör hjälpa dig att komma igång. En fullständig beskrivning av klassen finns i CTaskDialog-klassen .

Se även

dialogrutor
CTaskDialog-klass
CTaskDialog::CTaskDialog