다음을 통해 공유


연습: 애플리케이션에 CTaskDialog 추가

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

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

참고 항목

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

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

필수 조건

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

  • Visual Studio 2010 이상

  • Windows Vista 이상

Windows 메시지 상자를 CTaskDialog로 대체

다음 절차에서는 Windows 메시지 상자를 대체하는 CTaskDialog의 가장 기본적인 사용법을 보여 줍니다. 또한 이 예제에서는 작업 대화 상자와 연결된 아이콘을 변경합니다. 아이콘을 변경하면 CTaskDialog Windows 메시지 상자와 동일하게 표시됩니다.

Windows 메시지 상자를 CTaskDialog로 대체하려면

  1. MFC 애플리케이션 마법사사용하여 모든 기본 설정을 사용하여 MFC 애플리케이션을 만듭니다. 연습: 새 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;
    
  6. 4단계의 코드 뒤에 다음 코드를 추가합니다. 이 코드를 사용하면 사용자 컴퓨터에서 CTaskDialog가 지원됩니다. 대화 상자가 지원되지 않으면 애플리케이션에 Windows 메시지 상자가 대신 표시됩니다.

    if (CTaskDialog::IsSupported())
    {
    
    }
    else
    {
        AfxMessageBox(message);
    }
    
  7. 5단계의 if 문 뒤에 다음 코드를 대괄호로 묶어 삽입합니다. 이 코드는 CTaskDialog를 만듭니다.

    CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON);
    
  8. 그 다음 줄에 다음 코드를 추가합니다. 이 코드는 경고 아이콘을 설정합니다.

    taskDialog.SetMainIcon(TD_WARNING_ICON);
    
  9. 그 다음 줄에 다음 코드를 추가합니다. 이 코드는 작업 대화 상자를 표시합니다.

    taskDialog.DoModal();
    

Windows 메시지 상자와 동일한 아이콘을 CTaskDialog 표시하지 않으려면 7단계를 방지할 수 있습니다. 해당 단계를 피하면 애플리케이션에서 아이콘을 CTaskDialog 표시할 때 아이콘이 없습니다.

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

CTaskDialog에 기능 추가

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

CTaskDialog에 기능을 추가하려면

  1. 리소스 뷰로 이동합니다. 리소스 보기를 볼 수 없는 경우 보기 메뉴에서 열 수 있습니다.

  2. 문자열 테이블 폴더를 선택할 수 있을 때까지 리소스 뷰 를 확장합니다. 폴더를 확장하고 문자열 테이블 항목을 두 번 클릭합니다.

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

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

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

  6. 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");
    
  8. 사용자에게 작업 대화 상자를 표시하고 사용자가 선택한 항목을 검색하는 다음 코드 줄을 추가합니다.

    INT_PTR result = taskDialog.DoModal();
    
  9. taskDialog.DoModal()에 대한 호출 뒤에 다음 코드를 삽입합니다. 이 코드 섹션은 사용자의 입력을 처리합니다.

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

9단계의 코드에서 지정된 조건에서 실행하려는 코드로 PROCESS IF 시작하는 주석을 바꿉니다.

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

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

다음 절차에서는 CTaskDialog 개체를 만들지 않고 CTaskDialog 를 표시하는 방법을 보여 줍니다. 이 예제에서는 이전 절차를 계속 진행합니다.

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

  1. 아직 열려 있지 않은 경우 MyProject.cpp 파일을 엽니다.

  2. if (CTaskDialog::IsSupported()) 문에 대한 오른쪽 대괄호로 이동합니다.

  3. if 문의 오른쪽 대괄호 바로 앞( else 블록의 앞)에 다음 코드를 삽입합니다.

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

애플리케이션을 컴파일하고 실행합니다. 두 개의 작업 대화 상자가 애플리케이션에 표시됩니다. 첫 번째 대화 상자는 CTaskDialog 프로시저에 기능을 추가하기 위한 대화 상자이고, 두 번째 대화 상자는 마지막 절차에서 가져옵니다.

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

참고 항목

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