이 연습에서는 클래스를 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 메시지 상자와 비슷하게 표시됩니다.
MFC 애플리케이션 마법사를 사용하여 모든 기본 설정으로 MFC(Microsoft Foundation Classes) 애플리케이션을 만듭니다. 새 MFC 셸 컨트롤 사용 방법 안내서를 참조하여 해당 Visual Studio 버전에 맞는 마법사를 여는 방법에 대한 지침을 확인하세요.
MyProject라고 합니다.
솔루션 탐색기를 사용하여 을 엽니다
MyProject.cpp
.포함 목록 다음에
#include "afxtaskdialog.h"
을 추가하십시오.메서드
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
에 기능을 추가하는 방법을 보여줍니다. 예제 코드는 사용자의 선택에 따라 특정 지침을 실행하는 방법을 보여 줍니다.
다른 Windows> 통해리소스 보기>로 이동합니다.
리소스 뷰를 문자열 테이블 폴더로 확장합니다. 확장한 다음 문자열 테이블을 두 번 클릭합니다.
문자열 테이블의 아래쪽으로 스크롤하여 새 항목을 추가합니다. ID를 .로 변경합니다
TEMP_LINE1
. 캡션을Command Line 1
로 설정합니다.다른 새 항목을 추가합니다. ID를 .로 변경합니다
TEMP_LINE2
. 캡션을Command Line 2
로 설정합니다.MyProject.cpp
으로 다시 이동합니다함수에서
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.");
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를 표시하려면
MyProject.cpp
파일을 엽니다.함수에서
CMyProjectApp::InitInstance()
문의 닫는 대괄호로 탐색하십시오.문장의 닫는
if
대괄호 바로 앞에 다음 코드를 삽입합니다 (블록인else
앞).HRESULT result2 = CTaskDialog::ShowDialog(L"My error message", L"Error", L"New Title", TEMP_LINE1, TEMP_LINE2);
애플리케이션을 컴파일하고 실행합니다. 애플리케이션에는 두 개의 작업 대화 상자가 표시됩니다. 첫 번째 대화 상자는 CTaskDialog 프로시저에 기능을 추가하려면 두 번째 대화 상자는 이전 절차에서 가져온 것입니다.
이러한 예제는 사용 가능한 옵션을 CTaskDialog
모두 보여 주는 것은 아니지만 시작하는 데 도움이 됩니다. 클래스에 대한 전체 설명은 CTaskDialog 클래스 를 참조하세요.