대화 상자(대화 상자)

대화 상자는 애플리케이션이 사용자 입력을 검색하기 위해 만드는 임시 창입니다. 애플리케이션은 일반적으로 대화 상자를 사용하여 사용자에게 메뉴 항목에 대한 추가 정보를 묻는 메시지를 표시합니다. 대화 상자에는 일반적으로 사용자가 텍스트를 입력하거나 옵션을 선택하거나 작업을 지시하는 하나 이상의 컨트롤(자식 창)이 포함됩니다.

또한 Windows는 열기인쇄와 같은 일반적인 메뉴 항목을 지원하는 미리 정의된 대화 상자를 제공합니다. 이러한 메뉴 항목을 사용하는 애플리케이션은 애플리케이션 유형에 관계없이 일반적인 대화 상자를 사용하여 이 사용자 입력을 묻는 메시지를 표시해야 합니다.

섹션 내용

속성 Description
대화 상자 정보 애플리케이션에 대한 사용자 인터페이스에서 대화 상자를 사용하는 방법에 대해 설명합니다.
대화 상자 프로그래밍 고려 사항 이 개요에서는 대화 상자와 관련된 몇 가지 프로그래밍 고려 사항에 대해 설명합니다.
대화 상자 사용 대화 상자를 사용하여 정보를 표시하고 사용자의 입력을 묻는 메시지를 표시합니다.
대화 상자 참조 API 참조
일반 대화 상자 라이브러리 애플리케이션의 사용자 인터페이스에서 일반적인 대화 상자를 사용하는 방법에 대해 설명합니다.

대화 상자 함수

속성 Description
CreateDialog 대화 상자 템플릿 리소스에서 모덜리스 대화 상자를 만듭니다.
CreateDialogIndirect 메모리의 대화 상자 템플릿에서 모덜리스 대화 상자를 만듭니다.
CreateDialogIndirectParam 메모리의 대화 상자 템플릿에서 모덜리스 대화 상자를 만듭니다. 대화 상자를 표시하기 전에 함수는 애플리케이션 정의 값을 대화 상자 프로시저에 WM_INITDIALOG 메시지의 lParam 매개 변수로 전달합니다. 애플리케이션은 이 값을 사용하여 대화 상자 컨트롤을 초기화할 수 있습니다.
CreateDialogParam 대화 상자 템플릿 리소스에서 모덜리스 대화 상자를 만듭니다. 대화 상자를 표시하기 전에 함수는 애플리케이션 정의 값을 대화 상자 프로시저에 WM_INITDIALOG 메시지의 lParam 매개 변수로 전달합니다. 애플리케이션은 이 값을 사용하여 대화 상자 컨트롤을 초기화할 수 있습니다.
DefDlgProc 기본 대화 상자 창 프로시저를 호출하여 프라이빗 창 클래스가 있는 대화 상자가 처리되지 않는 모든 창 메시지에 대한 기본 처리를 제공합니다.
DialogBox 대화 상자 템플릿 리소스에서 모달 대화 상자를 만듭니다. DialogBox 는 지정된 콜백 함수가 EndDialog 함수를 호출하여 모달 대화 상자를 종료할 때까지 컨트롤을 반환하지 않습니다.
DialogBoxIndirect 메모리의 대화 상자 템플릿에서 모달 대화 상자를 만듭니다. DialogBoxIndirect 는 지정된 콜백 함수가 EndDialog 함수를 호출하여 모달 대화 상자를 종료할 때까지 컨트롤을 반환하지 않습니다.
DialogBoxIndirectParam 메모리의 대화 상자 템플릿에서 모달 대화 상자를 만듭니다. 대화 상자를 표시하기 전에 함수는 애플리케이션 정의 값을 대화 상자 프로시저에 WM_INITDIALOG 메시지의 lParam 매개 변수로 전달합니다. 애플리케이션은 이 값을 사용하여 대화 상자 컨트롤을 초기화할 수 있습니다.
DialogBoxParam 대화 상자 템플릿 리소스에서 모달 대화 상자를 만듭니다. 대화 상자를 표시하기 전에 함수는 애플리케이션 정의 값을 대화 상자 프로시저에 WM_INITDIALOG 메시지의 lParam 매개 변수로 전달합니다. 애플리케이션은 이 값을 사용하여 대화 상자 컨트롤을 초기화할 수 있습니다.
DialogProc CreateDialogDialogBox 함수 패밀리와 함께 사용되는 애플리케이션 정의 콜백 함수입니다. 모달 또는 모덜리스 대화 상자로 전송된 메시지를 처리합니다. DLGPROC 형식은 이 콜백 함수에 대한 포인터를 정의합니다. DialogProc 은 애플리케이션 정의 함수 이름의 자리 표시자입니다.
EndDialog 모달 대화 상자를 삭제하여 시스템에서 대화 상자에 대한 모든 처리를 종료합니다.
GetDialogBaseUnits 시스템 글꼴에서 문자의 평균 너비와 높이인 시스템의 대화 상자 기본 단위를 검색합니다. 시스템 글꼴을 사용하는 대화 상자의 경우 대화 상자 템플릿 및 픽셀에 지정된 대로 이러한 값을 사용하여 대화 상자 템플릿 단위 간에 변환할 수 있습니다. 시스템 글꼴을 사용하지 않는 대화 상자의 경우 대화 상자 템플릿 단위에서 픽셀로의 변환은 대화 상자에서 사용하는 글꼴에 따라 달라집니다.
GetDlgCtrlID 지정된 컨트롤의 식별자를 검색합니다.
GetDlgItem 지정된 대화 상자에서 컨트롤에 대한 핸들을 검색합니다.
GetDlgItemInt 대화 상자에서 지정된 컨트롤의 텍스트를 정수 값으로 변환합니다.
GetDlgItemText 대화 상자에서 컨트롤과 연결된 제목 또는 텍스트를 검색합니다.
GetNextDlgGroupItem 대화 상자에서 지정된 컨트롤 앞에 오거나 뒤에 오는 컨트롤 그룹의 첫 번째 컨트롤에 대한 핸들을 검색합니다.
GetNextDlgTabItem 지정된 컨트롤 앞에 오거나 뒤에 오는 WS_TABSTOP 스타일이 있는 첫 번째 컨트롤에 대한 핸들을 검색합니다.
IsDialogMessage 메시지가 지정된 대화 상자의 용도인지 여부를 확인하고 메시지인 경우 메시지를 처리합니다.
MapDialogRect 지정된 대화 상자 단위를 화면 단위(픽셀)로 변환합니다. 함수는 지정된 RECT 구조체의 좌표를 변환된 좌표로 바꿉니다. 이를 통해 구조체를 사용하여 대화 상자를 만들거나 대화 상자 내에 컨트롤을 배치할 수 있습니다.
MessageBox 시스템 아이콘, 단추 집합 및 상태 또는 오류 정보와 같은 간단한 애플리케이션 관련 메시지가 포함된 모달 대화 상자를 표시합니다. 메시지 상자는 사용자가 클릭한 단추를 나타내는 정수 값을 반환합니다.
MessageBoxEx 메시지 상자를 만들고 표시하며 작동합니다. 메시지 상자에는 애플리케이션 정의 메시지와 제목과 미리 정의된 아이콘과 푸시 단추의 조합이 포함되어 있습니다. 단추는 시스템 사용자 인터페이스의 언어로 제공됩니다.
MessageBoxIndirect 메시지 상자를 만들고 표시하며 작동합니다. 메시지 상자에는 애플리케이션에서 정의한 메시지 텍스트와 제목, 아이콘 및 미리 정의된 푸시 단추의 조합이 포함됩니다.
SendDlgItemMessage 대화 상자에서 지정된 컨트롤에 메시지를 보냅니다.
SetDlgItemInt 대화 상자의 컨트롤 텍스트를 지정된 정수 값의 문자열 표현으로 설정합니다.
SetDlgItemText 대화 상자에서 컨트롤의 제목 또는 텍스트를 설정합니다.

대화 상자 메시지

속성 설명
DM_GETDEFID 대화 상자에 대한 기본 푸시 단추 컨트롤의 식별자를 검색합니다.
DM_REPOSITION 바탕 화면 영역에 맞도록 최상위 대화 상자의 위치를 변경합니다. 애플리케이션은 크기를 조정한 후 이 메시지를 대화 상자로 보내 전체 대화 상자가 계속 표시되도록 할 수 있습니다.
DM_SETDEFID 대화 상자의 기본 푸시 단추 식별자를 변경합니다.

대화 상자 알림

속성 설명
WM_CTLCOLORDLG 시스템에서 대화 상자를 그리기 전에 대화 상자로 전송됩니다. 이 메시지에 응답하면 대화 상자에서 지정된 디스플레이 디바이스 컨텍스트 핸들을 사용하여 텍스트 및 배경색을 설정할 수 있습니다.
WM_ENTERIDLE 유휴 상태를 입력하는 모달 대화 상자 또는 메뉴의 소유자 창으로 전송됩니다. 모달 대화 상자 또는 메뉴는 하나 이상의 이전 메시지를 처리한 후 큐에서 대기 중인 메시지가 없을 때 유휴 상태로 전환됩니다.
WM_GETDLGCODE 컨트롤과 연결된 창 프로시저로 전송됩니다. 기본적으로 시스템은 컨트롤에 대한 모든 키보드 입력을 처리합니다. 시스템은 특정 유형의 키보드 입력을 대화 상자 탐색 키로 해석합니다. 이 기본 동작을 재정의하기 위해 컨트롤은 WM_GETDLGCODE 메시지에 응답하여 자체 처리하려는 입력 유형을 나타낼 수 있습니다.
WM_INITDIALOG 대화 상자가 표시되기 직전에 대화 상자 프로시저로 전송됩니다. 대화 상자 프로시저는 일반적으로 이 메시지를 사용하여 컨트롤을 초기화하고 대화 상자의 모양에 영향을 주는 다른 초기화 작업을 수행합니다.
WM_NEXTDLGCTL 대화 상자에서 키보드 포커스를 다른 컨트롤로 설정하기 위한 대화 상자 프로시저로 전송됩니다.

대화 상자 구조체

속성 설명
DLGITEMTEMPLATE 대화 상자에서 컨트롤의 차원과 스타일을 정의합니다. 이러한 구조체 중 하나 이상이 DLGTEMPLATE 구조체와 결합되어 대화 상자의 표준 템플릿을 형성합니다.
DLGITEMTEMPLATEEX 확장 대화 상자에 대해 설명합니다. 확장 대화 상자 템플릿의 형식에 대한 설명은 DLGTEMPLATEEX를 참조하세요.
DLGTEMPLATE 대화 상자의 크기와 스타일을 정의합니다. 대화 상자의 표준 템플릿에서 항상 첫 번째 구조체인 이 구조체는 대화 상자의 컨트롤 수를 지정하므로 템플릿의 후속 DLGITEMTEMPLATE 구조체 수를 지정합니다.
DLGTEMPLATEEX 확장 대화 상자 템플릿은 대화 상자를 설명하고 대화 상자의 컨트롤 수를 지정하는 DLGTEMPLATEEX 헤더로 시작합니다. 대화 상자의 각 컨트롤에 대해 확장된 대화 상자 템플릿에는 DLGITEMTEMPLATEEX 형식을 사용하여 컨트롤을 설명하는 데이터 블록이 있습니다.
MSGBOXPARAMS 메시지 상자를 표시하는 데 사용되는 정보를 포함합니다. MessageBoxIndirect 함수는 이 구조를 사용합니다.