Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku przedstawiono klasę CTaskDialog i pokazano, jak dodać go do aplikacji.
CTaskDialog to okno dialogowe zadania, które zastępuje okno komunikatu systemu Windows w systemie Windows Vista lub nowszym.
CTaskDialog ulepsza oryginalne pole komunikatu i dodaje funkcjonalność. Pole komunikatu systemu Windows jest nadal obsługiwane w programie Visual Studio.
Notatka
Wersje systemu Windows starsze niż Windows Vista nie obsługują CTaskDialog. Musisz zaprogramować alternatywną opcję okna dialogowego, jeśli chcesz pokazać komunikat użytkownikowi, który uruchamia Twoją aplikację na wcześniejszej wersji systemu Windows. Można użyć metody statycznej CTaskDialog::IsSupported, aby w czasie wykonywania określić, czy komputer użytkownika może wyświetlać CTaskDialog. Ponadto CTaskDialog jest dostępna tylko wtedy, gdy aplikacja jest kompilowana przy użyciu biblioteki Unicode.
CTaskDialog obsługuje kilka opcjonalnych elementów do zbierania i wyświetlania informacji. Na przykład CTaskDialog może wyświetlać linki poleceń, dostosowane przyciski, dostosowane ikony i stopkę.
CTaskDialog ma również kilka metod, które umożliwiają wykonywanie zapytań o stan okna dialogowego zadania w celu określenia opcjonalnych elementów wybranych przez użytkownika.
Warunki wstępne
Do ukończenia tego przewodnika potrzebne są następujące składniki:
- Visual Studio 2010 lub nowszy
- Windows Vista lub nowszy
Zastąp okno komunikatu systemu Windows oknem CTaskDialog.
Poniżej przedstawiono najbardziej podstawowe użycie CTaskDialog, który ma zastąpić pole komunikatu systemu Windows. W tym przykładzie także zmienia się ikona skojarzona z oknem dialogowym zadania. Zmiana ikony powoduje, że CTaskDialog będzie wyglądać podobnie do okna komunikatu systemu Windows.
Użyj kreatora aplikacji MFC, aby utworzyć aplikację Microsoft Foundation Classes (MFC) ze wszystkimi ustawieniami domyślnymi. Zobacz Przewodnik: używanie nowych kontrolek powłoki MFC, aby uzyskać instrukcje dotyczące sposobu otwierania kreatora dla używanej wersji programu Visual Studio.
Nadaj mu nazwę MyProject.
Użyj eksploratora rozwiązań , aby otworzyć
MyProject.cpp.Dodaj
#include "afxtaskdialog.h"po liście dołączonych.Znajdź metodę
CMyProjectApp::InitInstance. Wstaw następujące wiersze kodu przed instrukcjąreturn TRUE;. Ten kod tworzy ciągi znaków używane w oknie komunikatu systemu Windows lub wCTaskDialog.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); }
Skompiluj i uruchom aplikację. Aplikacja wyświetla okno dialogowe zadania po jego uruchomieniu.
Dodaj funkcjonalność do CTaskDialog
Poniżej przedstawiono sposób dodawania funkcjonalności do CTaskDialog utworzonego w poprzedniej procedurze. Przykładowy kod pokazuje, jak wykonać określone instrukcje na podstawie wyboru użytkownika.
Przejdź do Widok zasobów przez Widok>Inne okna>Widok zasobów.
Rozwiń widok zasobów do folderu tabeli ciągów. Rozwiń ją i kliknij dwukrotnie tabeli ciągów.
Przewiń do dołu tabeli ciągów i dodaj nowy wpis. Zmień identyfikator na
TEMP_LINE1. Ustaw podpis naCommand Line 1.Dodaj kolejny nowy wpis. Zmień identyfikator na
TEMP_LINE2. Ustaw podpis naCommand Line 2.Wróć do
MyProject.cpp.W funkcji
CMyProjectApp::InitInstance()poCString emptyString;dodaj następujący 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.");Znajdź instrukcję
taskDialog.DoModal()i zastąp instrukcję poniższym kodem. Ten kod aktualizuje okno dialogowe zadania i dodaje nowe kontrolki: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; }
Skompiluj i uruchom aplikację. Aplikacja wyświetla okno dialogowe zadania, które używa nowych kontrolek i dodatkowych informacji.
Wyświetlanie CTaskDialog bez konieczności tworzenia obiektu CTaskDialog
Poniżej przedstawiono sposób wyświetlania CTaskDialog bez uprzedniego utworzenia obiektu CTaskDialog. W tym przykładzie są kontynuowane poprzednie procedury.
Aby wyświetlić CTaskDialog bez tworzenia obiektu CTaskDialog
Otwórz plik
MyProject.cpp.W funkcji
CMyProjectApp::InitInstance()przejdź do nawiasu zamykającego instrukcjiif (CTaskDialog::IsSupported()).Wstaw następujący kod bezpośrednio przed nawiasem zamykającym instrukcji
if(przed blokiemelse):HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
Skompiluj i uruchom aplikację. Aplikacja wyświetla dwa okna dialogowe zadania. Pierwsze okno dialogowe pochodzi z procedury Dodawanie funkcji do procedury CTaskDialog; drugie okno dialogowe pochodzi z poprzedniej procedury.
Te przykłady nie pokazują wszystkich dostępnych opcji dla CTaskDialog, ale mogą pomóc w rozpoczęciu. Zobacz klasa CTaskDialog, aby uzyskać pełny opis klasy.
Zobacz też
okna dialogowe
Klasa CTaskDialog
CTaskDialog::CTaskDialog