Udostępnij przez


Przewodnik: dodawanie obiektu CTaskDialog do aplikacji

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.

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

  2. Nadaj mu nazwę MyProject.

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

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

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

    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.

  1. Przejdź do Widok zasobów przez Widok>Inne okna>Widok zasobów.

  2. Rozwiń widok zasobów do folderu tabeli ciągów. Rozwiń ją i kliknij dwukrotnie tabeli ciągów.

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

  4. Dodaj kolejny nowy wpis. Zmień identyfikator na TEMP_LINE2. Ustaw podpis na Command Line 2.

  5. Wróć do MyProject.cpp.

  6. W funkcji CMyProjectApp::InitInstance() po CString 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.");
    
  7. 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

  1. Otwórz plik MyProject.cpp.

  2. W funkcji CMyProjectApp::InitInstance() przejdź do nawiasu zamykającego 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 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