Wskazówki: dodawanie obiektu CTaskDialog do aplikacji
W tym przewodniku przedstawiono klasę CTaskDialog i pokazano, jak dodać element do aplikacji.
Jest CTaskDialog
to okno dialogowe zadania, które zastępuje okno komunikatu systemu Windows w systemie Windows Vista lub nowszym. Element CTaskDialog
poprawia oryginalne pole komunikatu i dodaje funkcjonalność. Pole komunikatu systemu Windows jest nadal obsługiwane w programie Visual Studio.
Uwaga
Wersje systemu Windows starsze niż Windows Vista nie obsługują programu CTaskDialog
. Należy zaprogramować alternatywną opcję okna dialogowego, jeśli chcesz wyświetlić użytkownikowi, który uruchamia aplikację we wcześniejszej wersji systemu Windows. Możesz użyć metody statycznej CTaskDialog::IsSupported , aby określić w czasie wykonywania, czy komputer użytkownika może wyświetlać CTaskDialog
element . Ponadto parametr jest dostępny tylko wtedy, CTaskDialog
gdy aplikacja jest kompilowana za pomocą biblioteki Unicode.
Program obsługuje kilka opcjonalnych elementów do zbierania CTaskDialog
i wyświetlania informacji. Na przykład można CTaskDialog
wyświetlić linki poleceń, dostosowane przyciski, dostosowane ikony i stopkę. Istnieje CTaskDialog
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.
Wymagania wstępne
Następujące składniki są wymagane do przeprowadzenia tego instruktażu:
Visual Studio 2010 lub w nowszej wersji
Windows Vista lub nowszy
Zastępowanie pola komunikatów systemu Windows ciągiem CTaskDialog
Poniższa procedura przedstawia najbardziej podstawowe użycie CTaskDialog
elementu , który polega na zastąpieniu pola komunikatu systemu Windows. W tym przykładzie zmienia się również ikona skojarzona z okno dialogowe zadania. Zmiana ikony powoduje CTaskDialog
wyświetlenie tego samego okna komunikatu systemu Windows.
Aby zamienić pole komunikatów systemu Windows na CTaskDialog
Użyj Kreatora aplikacji MFC, aby utworzyć aplikację MFC ze wszystkimi ustawieniami domyślnymi. Zobacz Przewodnik: używanie nowych kontrolek powłoki MFC, aby uzyskać instrukcje dotyczące otwierania kreatora dla używanej wersji programu Visual Studio.
Nadaj mu nazwę MyProject.
Użyj Eksplorator rozwiązań, aby otworzyć plik MyProject.cpp.
Dodaj
#include "afxtaskdialog.h"
po liście dołączania.Znajdź metodę
CMyProjectApp::InitInstance
. Wstaw następujące wiersze kodu przed instrukcjąreturn TRUE;
. Ten kod tworzy ciągi, których używamy w polu komunikatu systemu Windows lub w plikuCTaskDialog
.CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString;
Dodaj następujący kod po kodzie z kroku 4. Ten kod gwarantuje, że komputer użytkownika obsługuje element
CTaskDialog
. Jeśli okno dialogowe nie jest obsługiwane, aplikacja wyświetli zamiast tego okno komunikatu systemu Windows.if (CTaskDialog::IsSupported()) { } else { AfxMessageBox(message); }
Wstaw następujący kod między nawiasami kwadratowymi po instrukcji
if
z kroku 5. Ten kod tworzy elementCTaskDialog
.CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
W następnym wierszu dodaj następujący kod. Ten kod ustawia ikonę ostrzeżenia.
taskDialog.SetMainIcon(TD_WARNING_ICON);
W następnym wierszu dodaj następujący kod. Ten kod wyświetla okno dialogowe zadania.
taskDialog.DoModal();
Możesz uniknąć kroku 7, jeśli nie chcesz CTaskDialog
, aby ikona wyświetlała tę samą ikonę co okno komunikatu systemu Windows. Jeśli ten krok nie zostanie wyświetlony, ikona CTaskDialog
nie będzie wyświetlana przez aplikację.
Skompiluj i uruchom aplikację. Aplikacja wyświetla okno dialogowe zadania po jego uruchomieniu.
Dodawanie funkcji do listy CTaskDialog
Poniższa procedura przedstawia sposób dodawania funkcji do CTaskDialog
elementu utworzonego w poprzedniej procedurze. Przykładowy kod pokazuje, jak wykonać określone instrukcje na podstawie wyboru użytkownika.
Aby dodać funkcjonalność do listy CTaskDialog
Przejdź do widoku zasobów. Jeśli nie widzisz widoku zasobów, możesz go otworzyć z menu Widok.
Rozwiń widok zasobów, dopóki nie będzie można wybrać folderu Tabela ciągów. Rozwiń go i kliknij dwukrotnie wpis Tabela ciągów.
Przewiń do dołu tabeli ciągów i dodaj nowy wpis. Zmień identyfikator na
TEMP_LINE1
. Ustaw podpis na wiersz polecenia 1.Dodaj kolejny nowy wpis. Zmień identyfikator na
TEMP_LINE2
. Ustaw podpis na wiersz polecenia 2.Wróć do pliku MyProject.cpp.
Po
CString emptyString;
pliku 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ę następującym 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");
Dodaj następujący wiersz kodu, który wyświetla okno dialogowe zadania do użytkownika i pobiera wybór użytkownika:
INT_PTR result = taskDialog.DoModal();
Wstaw następujący kod po wywołaniu metody
taskDialog.DoModal()
. Ta sekcja kodu przetwarza dane wejściowe użytkownika: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; }
W kodzie w kroku 9 zastąp PROCESS IF
komentarze rozpoczynające się od kodem, który chcesz wykonać w określonych warunkach.
Skompiluj i uruchom aplikację. Aplikacja wyświetla okno dialogowe zadania, które używa nowych kontrolek i dodatkowych informacji.
Wyświetlanie obiektu CTaskDialog bez tworzenia obiektu CTaskDialog
Poniższa procedura przedstawia sposób wyświetlania CTaskDialog
obiektu bez uprzedniego utworzenia CTaskDialog
obiektu. W tym przykładzie są kontynuowane poprzednie procedury.
Aby wyświetlić obiekt CTaskDialog bez tworzenia obiektu CTaskDialog
Otwórz plik MyProject.cpp, jeśli nie został jeszcze otwarty.
Przejdź do nawiasu zamykającego dla instrukcji
if (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 ostatniej procedury.
Te przykłady nie pokazują wszystkich dostępnych opcji dla elementu CTaskDialog
, ale powinny ułatwić rozpoczęcie pracy. Aby uzyskać pełny opis klasy, zobacz Klasa CTaskDialog.