Exemplarische Vorgehensweise: Hinzufügen eines CTaskDialog zu einer Anwendung
In dieser exemplarische Vorgehensweise wird CTaskDialog Class vorgestellt, und Sie erfahren, wie Sie eine Ihrer Anwendung hinzufügen können.
Dies CTaskDialog
ist ein Aufgabendialogfeld, das das Windows-Meldungsfeld in Windows Vista oder höher ersetzt. Der CTaskDialog
verbessert das ursprüngliche Meldungsfeld und fügt Funktionen hinzu. Das Windows-Meldungsfeld wird in Visual Studio weiterhin unterstützt.
Hinweis
Versionen von Windows vor Windows Vista unterstützen die CTaskDialog
. Sie müssen eine alternative Dialogfeldoption programmieren, wenn Sie einem Benutzer eine Meldung anzeigen möchten, der Ihre Anwendung unter einer früheren Version von Windows ausführt. Sie können die statische Methode CTaskDialog::IsSupported verwenden, um zur Laufzeit zu bestimmen, ob der Computer eines Benutzers ein CTaskDialog
ersetzt. Darüber hinaus ist der CTaskDialog
nur verfügbar, wenn Ihre Anwendung mit der Unicode-Bibliothek erstellt wird.
Der CTaskDialog
unterstützt mehrere optionale Elemente zum Sammeln und Anzeigen von Informationen. Ein CTaskDialog
kann beispielsweise Befehlslinks, benutzerdefinierte Schaltflächen, benutzerdefinierte Symbole und eine Fußzeile anzeigen. Der CTaskDialog
verfügt auch über mehrere Methoden, mit denen Sie den Status des Aufgabendialogfelds abfragen können, um festzustellen, welche optionalen Elemente der Benutzer ausgewählt hat.
Voraussetzungen
Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
Visual Studio 2010 oder höher
Windows Vista oder höher
Ersetzen eines Windows-Meldungsfeld mit einem CTaskDialog
Das folgende Verfahren veranschaulicht die grundlegende Verwendung des CTaskDialog
, sprich die Ersetzung des Windows-Meldungsfelds. In diesem Beispiel wird auch das Symbol geändert, das dem Aufgabendialogfeld zugeordnet ist. Wenn Sie das Symbol ändern, wird das CTaskDialog
gleiche wie das Windows-Meldungsfeld angezeigt.
So ersetzen Sie ein Windows-Meldungsfeld durch einen CTaskDialog
Verwenden Sie den MFC-Anwendungs-Assistenten , um eine MFC-Anwendung mit allen Standardeinstellungen zu erstellen. Siehe Exemplarische Vorgehensweise: Verwenden der neuen MFC-Shellsteuerelemente für Anweisungen zum Öffnen des Assistenten für Ihre Version von Visual Studio.
Nennen Sie es "MyProject".
Verwenden Sie den Projektmappen-Explorer , die Datei „MyProject.cpp“ zu öffnen.
Fügen Sie nach der include-Liste
#include "afxtaskdialog.h"
ein.Suchen Sie die
CMyProjectApp::InitInstance
-Methode. Fügen Sie die folgenden Codezeilen vor derreturn TRUE;
-Anweisung ein. Dieser Code erstellt die Zeichenfolgen, die wir im Windows-Meldungsfeld oder imCTaskDialog
verwenden.CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString;
Fügen Sie den folgenden Code nach dem Code aus Schritt 4 ein. Dieser Code stellt sicher, dass der Computer des Benutzers den
CTaskDialog
unterstützt. Wenn das Dialogfeld nicht unterstützt wird, zeigt die Anwendung stattdessen ein Windows-Meldungsfeld an.if (CTaskDialog::IsSupported()) { } else { AfxMessageBox(message); }
Fügen Sie folgenden Code zwischen den Klammern hinter der
if
-Anweisung aus Schritt 5 ein. Dieser Code erstellt denCTaskDialog
.CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
Fügen Sie in der nächsten Zeile den folgenden Code ein. Dieser Code legt das Warnsymbol fest.
taskDialog.SetMainIcon(TD_WARNING_ICON);
Fügen Sie in der nächsten Zeile den folgenden Code ein. Dieser Code zeigt das Aufgabendialogfeld an.
taskDialog.DoModal();
Sie können Schritt 7 vermeiden, wenn das Symbol nicht CTaskDialog
mit dem Windows-Meldungsfeld angezeigt werden soll. Wenn Sie diesen Schritt vermeiden, weist das CTaskDialog
Symbol kein Symbol auf, wenn die Anwendung sie anzeigt.
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
Das folgende Verfahren zeigt, wie Sie dem CTaskDialog
Funktionen hinzufügen können, die Sie im vorherigen Verfahren erstellt haben. Der Beispielcode zeigt Ihnen, wie Sie bestimmte Anweisungen basierend auf der Auswahl des Benutzers ausführen.
So fügen Sie Funktionen zum CTaskDialog hinzu
Navigieren Sie zur Ressourcenansicht. Wenn die Ressourcenansicht nicht angezeigt wird, können Sie sie im Menü "Ansicht" öffnen.
Erweitern Sie die Ressourcenansicht , bis Sie den Ordner Zeichenfolgentabelle auswählen können. Erweitern Sie ihn, und doppelklicken Sie auf den Eintrag Zeichenfolgentabelle .
Führen Sie einen Bildlauf zum unteren Rand der Tabelle durch, und fügen Sie einen neuen Eintrag hinzu. Ändern Sie die ID in
TEMP_LINE1
. Legen Sie Befehlszeile 1als Beschriftung fest.Fügen Sie einen weiteren neuen Eintrag hinzu. Ändern Sie die ID in
TEMP_LINE2
. Legen Sie Befehlszeile 2als Beschriftung fest.Navigieren Sie zurück zu „MyProject.cpp“.
Fügen Sie 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.");
Suchen Sie die
taskDialog.DoModal()
-Anweisung, und ersetzen Sie sie 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");
Fügen Sie die folgende Codezeile hinzu, die das Aufgabendialogfeld für den Benutzer anzeigt und die Auswahl des Benutzers abruft:
INT_PTR result = taskDialog.DoModal();
Fügen Sie nach dem Aufruf von
taskDialog.DoModal()
den folgenden Code ein. Mit diesem Codeabschnitt wird die Eingabe des Benutzers verarbeitet: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; }
Ersetzen Sie im Code in Schritt 9 die Kommentare, die mit PROCESS IF
dem Code beginnen, der unter den angegebenen Bedingungen ausgeführt werden soll.
Kompilieren Sie die Anwendung, und führen Sie sie aus. Die Anwendung zeigt das Aufgabendialogfeld an, das die neuen Steuerelemente und zusätzliche Informationen verwendet.
Anzeigen eines CTaskDialog, ohne ein CTaskDialog-Objekt zu erstellen
Das folgende Verfahren veranschaulicht, wie Sie ein CTaskDialog
anzeigen, ohne zuvor ein CTaskDialog
-Objekt erstellen zu müssen. Mit diesem Beispiel werden die vorherigen Prozeduren fortgesetzt.
So zeigen Sie einen CTaskDialog an, ohne ein CTaskDialog-Objekt zu erstellen
Öffnen Sie die Datei "MyProject.cpp", wenn sie noch nicht geöffnet ist.
Navigieren Sie zur schließenden Klammer für die
if (CTaskDialog::IsSupported())
-Anweisung.Fügen Sie den folgenden Code direkt vor der schließenden 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 Vorgehensweise zum Hinzufügen von Funktionen zur CTaskDialog-Prozedur . Das zweite Dialogfeld stammt aus der letzten Prozedur.
Diese Beispiele veranschaulichen nicht alle verfügbaren Optionen für ein CTaskDialog
, sollten Ihnen jedoch bei den ersten Schritten helfen. Eine vollständige Beschreibung der Klasse finden Sie unter CTaskDialog Class .