모달 대화 상자 만들기

DialogBox 함수를 사용 하 여 모달 대화 상자를 만듭니다. 식별자 또는 대화 상자 템플릿 리소스의 이름 및 대화 상자 프로시저의 주소를 지정 해야 합니다. DialogBox 함수 서식 파일 로드 대화 상자를 표시 하 고 사용자가 대화 상자를 닫을 때까지 모든 사용자 입력을 처리.

다음 예제에서는 응용 프로그램 사용자는 응용 프로그램 메뉴에서 항목 삭제 명령을 선택 하면 모달 대화 상자를 표시 합니다. (어떤 사용자가 입력 한 항목의 이름을) 편집 컨트롤을 포함 하는 대화 상자와 확인 및 취소 단추. 이러한 컨트롤에 대 한 컨트롤 식별자는 ID_ITEMNAME, IDOK, IDCANCEL, 각각.

예제의 첫 번째 부분 모달 대화 상자를 생성 하는 문으로 구성 됩니다. 이러한 문은 응용 프로그램의 주 창에 대 한 창 프로시저에서 만들기 대화 상자에서 시스템 IDM_DELETEITEM 명령 식별자가 WM_COMMAND 메시지를 받을 때 예제의 두 번째 부분이 이다는 편집 컨트롤의 내용을 검색 하 고 WM_COMMAND 메시지를 받으면 대화 상자 닫습니다 대화 상자 프로시저.

다음 문은 모달 대화 상자를 만듭니다. 대화 상자 템플릿을 응용 프로그램의 실행 파일에 리소스 이며 리소스 식별자 DLG_DELETEITEM가:

wM_COMMAND 사례: 전환 (LOWORD(wParam)) {IDM_DELETEITEM 경우: 만약 (DialogBox (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd (DLGPROC) DeleteItemProc) = IDOK) {
 
                    / / 명령을; 완료 szItemName / 항목의 이름을 포함 하는 / / /을 삭제 합니다. 

                }
 
                else 
                {

/ / 명령을 취소 합니다. 

                } 
                break; 
        } 0 L 반환 
 

이 예제에서는 응용 프로그램 대화 상자에 대 한 소유자 창으로 메인 윈도우를 식별합니다. 처음 시스템 대화 상자에 표시 됩니다, 그 위치 소유자 창 클라이언트 영역의 왼쪽된 위 모서리에 상대적입니다. 응용 프로그램 명령으로 계속 진행 하거나 취소할 것인지 결정 DialogBox 에서 반환 값을 사용 합니다. 다음 문은 대화 상자 프로시저 정의.

char szItemName [80]; / / 삭제할 항목의 이름을 받습니다. 
 
BOOL 콜백 DeleteItemProc (hwndDlg, 메시지, wParam, lParam) HWND hwndDlg; 
UINT 메시지; 
WPARAM wParam; 
LPARAM lParam; 
{스위치 (메시지) {WM_COMMAND 사례: 전환 (LOWORD(wParam)) {IDOK 사례: if (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0; 
 
                    / /를 통해가. 
 
                IDCANCEL 사례: EndDialog (hwndDlg, wParam); 
                    TRUE를 반환 합니다. 
            }} FALSE; 반환 
} 
 

이 예제에서는 프로시저를 ID_ITEMNAME에 의해 식별 된 편집 컨트롤에서 현재 텍스트를 검색 하려면 GetDlgItemText 를 사용 합니다. 프로시저는 다음 수신 하는 메시지에 따라 IDOK 또는 IDCANCEL, 대화 상자 반환 값을 설정 하 고 대화 상자를 종료 하는 프로세스를 시작 하려면 EndDialog 함수를 호출 합니다. IDOK 및 IDCANCEL 식별자 확인 및 취소 단추에 해당합니다. 프로시저 호출 EndDialog, 시스템 추가 메시지 대화 상자를 파괴 하는 절차를 보내고 다시 대화 상자를 생성 하는 함수에 대화 상자의 반환 값을 반환 합니다.

 

Index