Teilen über


Exemplarische Vorgehensweise: Hinzufügen eines CTaskDialog zu einer Anwendung

In dieser Einleitung wird die CTaskDialog Klasse eingeführt und gezeigt, wie Sie sie zu Ihrer Anwendung hinzufügen.

Die CTaskDialog ist ein Aufgabendialogfeld, das das Windows-Meldungsfeld in Windows Vista oder höher ersetzt. Die CTaskDialog verbessert das ursprüngliche Meldungsfeld und fügt Funktionen hinzu. Das Windows-Meldungsfeld wird in Visual Studio weiterhin unterstützt.

Anmerkung

Versionen von Windows vor Windows Vista unterstützen die CTaskDialognicht. Sie müssen eine alternative Dialogfeldoption programmieren, wenn Sie einem Benutzer, der Ihre Anwendung auf einer früheren Version von Windows ausführt, eine Meldung anzeigen möchten. Sie können die statische Methode CTaskDialog::IsSupported verwenden, um zur Laufzeit zu bestimmen, ob der Computer eines Benutzers eine CTaskDialoganzeigen kann. Darüber hinaus ist die CTaskDialog nur verfügbar, wenn Ihre Anwendung mit der Unicode-Bibliothek erstellt wird.

Die CTaskDialog unterstützt mehrere optionale Elemente zum Sammeln und Anzeigen von Informationen. Beispielsweise kann ein CTaskDialog Befehlslinks, angepasste Schaltflächen, angepasste Symbole und eine Fußzeile anzeigen. Die CTaskDialog verfügt außerdem über mehrere Methoden, mit denen Sie den Status des Aufgabendialogfelds abfragen können, um zu bestimmen, welche optionalen Elemente der Benutzer ausgewählt hat.

Voraussetzungen

Sie benötigen die folgenden Komponenten, um diese Anleitung abzuschließen.

  • Visual Studio 2010 oder höher
  • Windows Vista oder höher

Ersetzen des Windows-Meldungsfelds durch einen CTaskDialog

Im Folgenden wird die einfachste Verwendung der CTaskDialogveranschaulicht, die das Windows-Meldungsfeld ersetzen soll. In diesem Beispiel wird auch das dem Aufgabendialogfeld zugeordnete Symbol geändert. Wenn Sie das Symbol ändern, wird die CTaskDialog ähnlich wie das Windows-Meldungsfeld angezeigt.

  1. Verwenden Sie den MFC-Anwendungs-Assistenten, um eine Microsoft Foundation Classes (MFC)-Anwendung mit allen Standardeinstellungen zu erstellen. Eine Anleitung zum Öffnen des Assistenten für Ihre Version von Visual Studio finden Sie unter Walkthrough: Verwenden der neuen MFC-Shell-Steuerelemente.

  2. Nennen Sie es MyProject.

  3. Verwenden Sie den Projektmappen-Explorer, um MyProject.cppzu öffnen.

  4. Fügen Sie #include "afxtaskdialog.h" nach der Liste der Eingeschlossenen hinzu.

  5. Suchen Sie die Methode CMyProjectApp::InitInstance. Fügen Sie die folgenden Codezeilen vor der return TRUE;-Anweisung ein. Dieser Code erstellt die Zeichenfolgen, die wir entweder im Windows-Meldungsfeld oder im CTaskDialogverwenden.

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

Kompilieren sie die Anwendung, und führen Sie sie aus. Die Anwendung zeigt das Aufgabendialogfeld nach dem Start an.

Hinzufügen von Funktionen zum CTaskDialog

Im Folgenden wird gezeigt, wie Sie dem CTaskDialog, den Sie im vorherigen Verfahren erstellt haben, Funktionen hinzufügen. Im Beispielcode wird gezeigt, wie Sie bestimmte Anweisungen basierend auf der Auswahl des Benutzers ausführen.

  1. Navigieren Sie zur Ressourcenansicht über Ansicht>Andere Fenster>Ressourcenansicht.

  2. Erweitern Sie die Ressourcen-Ansicht zum Ordner Zeichenfolgentabelle. Erweitern Sie sie, und doppelklicken Sie auf Zeichenfolgentabelle.

  3. Scrollen Sie zum Ende der Zeichenfolgentabelle, und fügen Sie einen neuen Eintrag hinzu. Ändern Sie die ID in TEMP_LINE1. Legen Sie die Beschriftung auf Command Line 1fest.

  4. Fügen Sie einen weiteren neuen Eintrag hinzu. Ändern Sie die ID in TEMP_LINE2. Legen Sie die Beschriftung auf Command Line 2fest.

  5. Navigieren Sie zurück zu MyProject.cpp.

  6. Fügen Sie in der funktion CMyProjectApp::InitInstance() nach CString emptyString; den folgenden Code hinzu:

    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. Suchen Sie die taskDialog.DoModal()-Anweisung, und ersetzen Sie diese Anweisung durch den folgenden Code. Dieser Code aktualisiert das Aufgabendialogfeld und fügt neue Steuerelemente hinzu:

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

Kompilieren sie die Anwendung, und führen Sie sie aus. Die Anwendung zeigt das Aufgabendialogfeld an, in dem die neuen Steuerelemente und zusätzliche Informationen verwendet werden.

Anzeigen eines CTaskDialog-Objekts ohne Erstellen eines CTaskDialog-Objekts

Im Folgenden wird gezeigt, wie Sie eine CTaskDialog anzeigen, ohne zuerst ein CTaskDialog-Objekt zu erstellen. In diesem Beispiel werden die vorherigen Prozeduren fortgesetzt.

So zeigen Sie ein CTaskDialog-Objekt an, ohne ein CTaskDialog-Objekt zu erstellen

  1. Öffnen Sie die datei MyProject.cpp.

  2. Navigieren Sie in der Funktion CMyProjectApp::InitInstance() zur schließenden Klammer der Anweisung if (CTaskDialog::IsSupported()).

  3. Fügen Sie den folgenden Code unmittelbar vor der schließende Klammer der if-Anweisung (vor dem else-Block) ein:

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

Kompilieren sie die Anwendung, und führen Sie sie aus. Die Anwendung zeigt zwei Aufgabendialogfelder an. Das erste Dialogfeld stammt aus der To Add Functionality to the CTaskDialog procedure; das zweite Dialogfeld stammt aus der vorherigen Prozedur.

Diese Beispiele veranschaulichen nicht alle verfügbaren Optionen für eine CTaskDialog, sollten Ihnen jedoch bei den ersten Schritten helfen. Eine vollständige Beschreibung der Klasse finden Sie unter CTaskDialog Class.

Siehe auch

Dialogfelder
CTaskDialog-Klasse
CTaskDialog::CTaskDialog