Udostępnij za pośrednictwem


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ć CTaskDialogelement . 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 CTaskDialogelementu , 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

  1. 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.

  2. Nadaj mu nazwę MyProject.

  3. Użyj Eksplorator rozwiązań, aby otworzyć plik MyProject.cpp.

  4. Dodaj #include "afxtaskdialog.h" po liście dołączania.

  5. 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 pliku CTaskDialog.

    CString message("My message to the user");
    CString dialogTitle("My Task Dialog title");
    CString emptyString;
    
  6. 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);
    }
    
  7. Wstaw następujący kod między nawiasami kwadratowymi po instrukcji if z kroku 5. Ten kod tworzy element CTaskDialog.

    CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
    
  8. W następnym wierszu dodaj następujący kod. Ten kod ustawia ikonę ostrzeżenia.

    taskDialog.SetMainIcon(TD_WARNING_ICON);
    
  9. 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

  1. Przejdź do widoku zasobów. Jeśli nie widzisz widoku zasobów, możesz go otworzyć z menu Widok.

  2. 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.

  3. Przewiń do dołu tabeli ciągów i dodaj nowy wpis. Zmień identyfikator na TEMP_LINE1. Ustaw podpis na wiersz polecenia 1.

  4. Dodaj kolejny nowy wpis. Zmień identyfikator na TEMP_LINE2. Ustaw podpis na wiersz polecenia 2.

  5. Wróć do pliku MyProject.cpp.

  6. 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.");
    
  7. 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");
    
  8. 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();
    
  9. 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

  1. Otwórz plik MyProject.cpp, jeśli nie został jeszcze otwarty.

  2. Przejdź do nawiasu zamykającego dla instrukcji if (CTaskDialog::IsSupported()) .

  3. Wstaw następujący kod bezpośrednio przed nawiasem zamykającym instrukcji if (przed blokiem else ):

    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.

Zobacz też

Okna dialogowe
Klasa CTaskDialog
CTaskDialog::CTaskDialog