다음을 통해 공유


단계별 가이드: 애플리케이션에서 CTaskDialog 추가하기

이 연습에서는 클래스를 CTaskDialog 소개하고 애플리케이션에 추가하는 방법을 보여 줍니다.

Windows CTaskDialog Vista 이상에서 Windows 메시지 상자를 대체하는 작업 대화 상자입니다. 원본 CTaskDialog 메시지 상자가 개선되고 기능이 추가됩니다. Windows 메시지 상자는 Visual Studio에서 계속 지원됩니다.

비고

Windows Vista보다 이전 버전의 Windows에서는 CTaskDialog를 지원하지 않습니다. 이전 버전의 Windows에서 애플리케이션을 실행하는 사용자에게 메시지를 표시하려면 대체 대화 상자 옵션을 프로그래밍해야 합니다. 정적 메서드 CTaskDialog::IsSupported 를 사용하여 런타임에 사용자의 컴퓨터에서 표시 CTaskDialog할 수 있는지 여부를 확인할 수 있습니다. 또한 애플리케이션이 CTaskDialog 유니코드 라이브러리를 사용하여 빌드된 경우에만 사용할 수 있습니다.

CTaskDialog는 정보를 수집하고 표시하기 위한 몇 가지 옵션 요소를 지원합니다. 예를 들어 명령 링크, CTaskDialog 사용자 지정된 단추, 사용자 지정된 아이콘 및 바닥글을 표시할 수 있습니다. CTaskDialog 또한 작업 대화 상자의 상태를 쿼리하여 사용자가 선택한 선택적 요소를 확인할 수 있는 몇 가지 메서드도 있습니다.

필수 조건

이 연습을 완료하려면 다음 구성 요소가 필요합니다.

  • Visual Studio 2010 이상
  • Windows Vista 이상

Windows 메시지 상자를 CTaskDialog로 바꾸기

다음은 Windows 메시지 상자를 바꾸는 가장 기본적인 용도 CTaskDialog를 보여 줍니다. 이 예제에서는 작업 대화 상자와 연결된 아이콘도 변경합니다. 아이콘을 변경하면 CTaskDialog Windows 메시지 상자와 비슷하게 표시됩니다.

  1. MFC 애플리케이션 마법사를 사용하여 모든 기본 설정으로 MFC(Microsoft Foundation Classes) 애플리케이션을 만듭니다. 새 MFC 셸 컨트롤 사용 방법 안내서를 참조하여 해당 Visual Studio 버전에 맞는 마법사를 여는 방법에 대한 지침을 확인하세요.

  2. MyProject라고 합니다.

  3. 솔루션 탐색기를 사용하여 을 엽니다MyProject.cpp.

  4. 포함 목록 다음에 #include "afxtaskdialog.h"을 추가하십시오.

  5. 메서드 CMyProjectApp::InitInstance를 찾습니다. 문 앞에 다음 코드 줄을 삽입합니다 return TRUE; . 이 코드는 우리가 Windows 메시지 상자 또는 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);
    }
    

애플리케이션을 컴파일하고 실행합니다. 애플리케이션이 시작되면 작업 대화 상자가 표시됩니다.

CTaskDialog에 기능 추가

이전 절차에서 만든 CTaskDialog에 기능을 추가하는 방법을 보여줍니다. 예제 코드는 사용자의 선택에 따라 특정 지침을 실행하는 방법을 보여 줍니다.

  1. 다른 Windows> 통해리소스 보기>로 이동합니다.

  2. 리소스 뷰문자열 테이블 폴더로 확장합니다. 확장한 다음 문자열 테이블을 두 번 클릭합니다.

  3. 문자열 테이블의 아래쪽으로 스크롤하여 새 항목을 추가합니다. ID를 .로 변경합니다 TEMP_LINE1. 캡션을 Command Line 1로 설정합니다.

  4. 다른 새 항목을 추가합니다. ID를 .로 변경합니다 TEMP_LINE2. 캡션을 Command Line 2로 설정합니다.

  5. MyProject.cpp으로 다시 이동합니다

  6. 함수에서 CMyProjectApp::InitInstance() 다음 코드를 추가한 후 CString emptyString; 다음 코드를 추가합니다.

    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. taskDialog.DoModal() 문을 찾아 해당 문을 다음 코드로 바꿉니다. 이 코드는 작업 대화 상자를 업데이트하고 새 컨트롤을 추가합니다.

    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;
    }
    

애플리케이션을 컴파일하고 실행합니다. 애플리케이션은 새 컨트롤 및 추가 정보를 사용하는 작업 대화 상자를 표시합니다.

CTaskDialog 개체를 만들지 않고 CTaskDialog 표시

먼저 CTaskDialog 개체를 만들지 않고 CTaskDialog를 표시하는 방법은 다음과 같습니다. 이 예제에서는 이전 절차를 계속합니다.

CTaskDialog 개체를 만들지 않고 CTaskDialog를 표시하려면

  1. MyProject.cpp 파일을 엽니다.

  2. 함수에서 CMyProjectApp::InitInstance() 문의 닫는 대괄호로 탐색하십시오.

  3. 문장의 닫는 if 대괄호 바로 앞에 다음 코드를 삽입합니다 (블록인 else 앞).

    HRESULT result2 = CTaskDialog::ShowDialog(L"My error message",
        L"Error",
        L"New Title",
        TEMP_LINE1,
        TEMP_LINE2);
    

애플리케이션을 컴파일하고 실행합니다. 애플리케이션에는 두 개의 작업 대화 상자가 표시됩니다. 첫 번째 대화 상자는 CTaskDialog 프로시저에 기능을 추가하려면 두 번째 대화 상자는 이전 절차에서 가져온 것입니다.

이러한 예제는 사용 가능한 옵션을 CTaskDialog모두 보여 주는 것은 아니지만 시작하는 데 도움이 됩니다. 클래스에 대한 전체 설명은 CTaskDialog 클래스 를 참조하세요.

참고하십시오

대화 상자
CTaskDialog 클래스
CTaskDialog::CTaskDialog