Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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.
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.
Nennen Sie es MyProject.
Verwenden Sie den Projektmappen-Explorer, um
MyProject.cppzu öffnen.Fügen Sie
#include "afxtaskdialog.h"nach der Liste der Eingeschlossenen hinzu.Suchen Sie die Methode
CMyProjectApp::InitInstance. Fügen Sie die folgenden Codezeilen vor derreturn TRUE;-Anweisung ein. Dieser Code erstellt die Zeichenfolgen, die wir entweder im Windows-Meldungsfeld oder imCTaskDialogverwenden.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.
Navigieren Sie zur Ressourcenansicht über Ansicht>Andere Fenster>Ressourcenansicht.
Erweitern Sie die Ressourcen-Ansicht zum Ordner Zeichenfolgentabelle. Erweitern Sie sie, und doppelklicken Sie auf Zeichenfolgentabelle.
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 aufCommand Line 1fest.Fügen Sie einen weiteren neuen Eintrag hinzu. Ändern Sie die ID in
TEMP_LINE2. Legen Sie die Beschriftung aufCommand Line 2fest.Navigieren Sie zurück zu
MyProject.cpp.Fügen Sie in der funktion
CMyProjectApp::InitInstance()nachCString 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.");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
Öffnen Sie die datei
MyProject.cpp.Navigieren Sie in der Funktion
CMyProjectApp::InitInstance()zur schließenden Klammer der Anweisungif (CTaskDialog::IsSupported()).Fügen Sie den folgenden Code unmittelbar vor der schließende Klammer der
if-Anweisung (vor demelse-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.