모달 대화 상자

모달 대화 상자의 시스템 메뉴, 제목 표시줄 및 두꺼운 테두리; 팝업 창이 있어야 합니다. 즉, 대화 상자 템플릿에 WS_POPUP, WS_SYSMENU, WS_CAPTION, 및 DS_MODALFRAME 스타일을 지정 해야 합니다. 응용 프로그램 WS_VISIBLE 스타일을 지정할 수 있습니다, 있지만 시스템 모달 대화 상자를 대화 상자 템플릿에 WS_VISIBLE 스타일을 지정 하는 여부에 관계 없이 항상 표시 됩니다. 응용 프로그램 WS_CHILD 스타일이 있는 모달 대화 상자를 만들 해야 합니다. 이 스타일과 함께 모달 대화 상자 비활성화 자체를 응용 프로그램에 도달에서 어떤 후속 입력 방지.

응용 프로그램 DialogBox 또는 DialogBoxIndirect 함수를 사용 하 여 모달 대화 상자를 만듭니다. DialogBox 필요 대화 상자 템플릿에;를 포함 하는 리소스의 식별자 또는 이름 DialogBoxIndirect 대화 상자 템플릿에 포함 된 메모리 개체의 핸들이 필요 합니다. DialogBoxParamDialogBoxIndirectParam 함수는 또한 모달 대화 상자를 만들 그들은 이전에 언급 한 함수에 동일 하지만 대화 상자를 만들 때 대화 상자 프로시저에 지정한 매개 변수를 전달.

모달 대화 상자를 만들 때 시스템은 활성 창. 대화 상자 EndDialog 함수를 호출 하는 대화 상자 프로시저 또는 시스템의 다른 응용 프로그램 창을 활성화 될 때까지 활성 상태로 유지 됩니다. 사용자도 응용 할 수 소유자 창이 활성 모달 대화 상자가 소멸 될 때까지.

소유자 창이 비활성화 하면 창과 모든 자식 창을 모달 대화 상자를 만들 때 그것에 속하는 시스템이 자동으로 비활성화 합니다. 소유자 창이 대화 상자가 소멸 될 때까지 비활성화 상태로. 대화 상자 프로시저를 잠재적으로 수 소유자 창이 언제 든 지 모달 대화 상자의 목적은 소유자 패배를 가능 하 게 하 고 하지 않습니다 있지만 것이 좋습니다. 시스템 모달 대화 상자 소유자 수 없게 발생 한 경우에 하지만 소유자 창을 다시 활성화 대화 상자 프로시저를 파괴 하는 경우.

시스템 모달 대화 상자를 만듭니다, 그것 WM_CANCELMODE 메시지를 보냅니다 창 (해당 되는 경우) 현재 마우스 입력을 캡처. 사용자는 모달 대화 상자에서 마우스를 이동할 수 있도록이 메시지를 수신 하는 응용 프로그램에서 마우스 캡처를 해제 해야 합니다. 시스템에 소유자 창을 사용할 수 없게, 되므로 모든 마우스 입력 소유자가이 메시지를 받을 때 마우스 단추를 실패 하는 경우 손실 됩니다.

모달 대화 상자에 대 한 메시지를 처리 하려면 시스템의 전체 응용 프로그램에 대 한 메시지 큐에 일시적으로 컨트롤을 복용 하는 자체 메시지 루프를 시작 합니다. 시스템 대화 상자에 대 한 명시적으로 메시지를 검색 하는 경우 메시지를 적절 한 창에 디스패치합니다. 응용 프로그램의 주 메시지 루프가 결국 메시지를 검색할 수 있도록 메시지를 응용 프로그램 메시지 큐 게시 WM_QUIT 메시지를 검색 하는 경우.

시스템 응용 프로그램이 메시지 큐가 비어 때마다 소유자 창이 WM_ENTERIDLE 메시지를 보냅니다. 응용 프로그램 대화 상자가 화면에 계속 하는 동안 백그라운드 작업을 수행 하려면이 메시지를 사용할 수 있습니다. 이런 방식이으로 응용 프로그램에 메시지를 자주 항복 해야 합니다 응용 프로그램 사용 (예를 들어 여 제어 PeekMessage 함수를 사용 하 여) 그래서 그 때 모달 대화 상자 사용자 입력을 받을 수 있습니다. 모달 대화 상자를 WM_ENTERIDLE 메시지를 보내지 못하도록 하려면 응용 프로그램 DS_NOIDLEMSG 스타일 만들 때 지정할 수 있는 대화 상자.

응용 프로그램 EndDialog 함수를 사용 하 여 모달 대화 상자를 소멸 시킵니다. 대부분의 경우, 대화 상자 프로시저는 사용자가 대화 상자의 시스템 메뉴에서 닫기 명령을 선택 하거나 대화 상자에서 확인 또는 취소 단추를 선택 하는 경우 EndDialog 를 호출 합니다. 대화 상자는 EndDialog 함수를 호출할 때 값을 지정 하 여 DialogBox 함수 (또는 다른 생성 함수)를 통해 값을 반환할 수 있습니다. 시스템 대화 상자를 파괴 한 후이 값을 반환 합니다. 대부분의 응용 프로그램 대화 상자는 작업을 성공적으로 완료 또는 사용자에 의해 취소 되었습니다 여부를 결정 하려면이 반환 값을 사용 합니다. 시스템 대화 상자 프로시저 EndDialog 함수를 호출 했습니다 때까지 대화 상자를 생성 하는 함수에서 컨트롤을 반환 하지 않습니다.

 

Index