Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
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 .
Kalla det MyProject.
Använd Solution Explorer för att öppna
MyProject.cpp
.Lägg till
#include "afxtaskdialog.h"
efter listan med inkluderingar.Hitta metoden
CMyProjectApp::InitInstance
. Infoga följande kodrader före instruktionenreturn TRUE;
. Den här koden skapar de strängar som vi använder i antingen Windows-meddelanderutan eller iCTaskDialog
.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.
Navigera till Resursvy via Visa>Andra fönster>Resursvy.
Expandera resursvyn till mappen String Table . Expandera den och dubbelklicka på Strängtabell.
Rulla längst ned i strängtabellen och lägg till en ny post. Ändra ID:t till
TEMP_LINE1
. Ange bildtexten tillCommand Line 1
.Lägg till ytterligare en ny post. Ändra ID:t till
TEMP_LINE2
. Ange bildtexten tillCommand Line 2
.Gå tillbaka till
MyProject.cpp
.I funktionen
CMyProjectApp::InitInstance()
, efterCString 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.");
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
Öppna
MyProject.cpp
-filen.I
CMyProjectApp::InitInstance()
-funktionen navigerar du till den avslutande hakparentesen förif (CTaskDialog::IsSupported())
-instruktionen.Infoga följande kod omedelbart före den avslutande hakparentesen för
if
-instruktionen (före detelse
-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 .