Modal 다이얼로그
Modal 다이얼로그는 애플리케이션이 사용자 입력을 받기 위해 만드는 임시 창입니다. Modal 다이얼로그에는 사용자가 텍스트를 입력하거나, 옵션을 선택하거나, 직접 작업을 수행할 수 있는 다이얼로그 항목들이 포함되어 있습니다. Modal 다이얼로그는 사용자가 애플리케이션을 계속 진행하기 전에 정보를 제공하거나 대화상자를 취소하도록 요구합니다. Modal 다이얼로그가 작성되고 작업을 수행하며 단일 함수를 호출하여 파괴됩니다.
Modal 다이얼로그가 생성되면 가장 높은 활성 창이 됩니다. Modal 다이얼로그가 열려 있는 동안 애플리케이션의 다른 창 또는 다이얼로그를 활성화할 수 없습니다. Modal 다이얼로그는 닫히거나 사용자가 다른 애플리케이션에서 창 또는 다이얼로그를 활성화할 때까지 활성화되어 있습니다.
Modal 다이얼로그를 만드는 방법에는 2가지가 있습니다. 리소스 스크립트에 정의된 Modal 다이얼로그를 생성하려면 애플리케이션은 다이얼로그의 크기, 스타일 및 내용을 설명하기 위해 GRC 파일 안의 GDLG 리소스를 제공해야 합니다. 또한 애플리케이션은 다이얼로그 콜백 함수를 제공하여 다이얼로그 관련 작업을 수행해야 합니다. 애플리케이션은 DGModalDialog 함수를 사용하여 다이얼로그를 생성할 수 있습니다. 이 함수는 다이얼로그의 GDLG 리소스를 로드하고, 다이얼로그 창과 리소스 사양과 일치하는 다이얼로그 항목들을 만듭니다. 애플리케이션은 DGBlankModalDialog 함수를 사용할 수도 있습니다. 이 함수는 리소스를 사용하지 않습니다. 이것은 프로그램 코드에서 빈 Modal 다이얼로그를 생성합니다. 애플리케이션은 생성 방법과는 별도로 DGAppendDialogItem 함수를 사용하여 다이얼로그 위에 다이얼로그 항목을 추가할 수 있습니다. 그런 다음 DGModalDialog 또는 DGBlankModalDialog는 모든 Modal 다이얼로그 이벤트를 처리하고 DG 메시지들과 함께 다이얼로그 콜백 함수를 호출하여 사용자 동작을 처리합니다. 마지막으로 다이얼로그를 파괴하고 대화상자가 닫힌 방식을 알려주는 값을 리턴합니다.
Modal 다이얼로그들은 다이얼로그 항목들에 대해 문맥에 맞는 도움말을 제공할 수 있습니다. 다이얼로그 항목에는 2가지 타입의 도움말 정보가 있을 수 있습니다: 도구 팁과 별도의 세부 정보에 대한 앵커입니다. Macintosh에서는 매킨토시 시스템 도움말 메뉴를 통해 이 기능을 사용할 수 있는 경우 짧은 기능이 풍선 도움말에 표시됩니다. Windows에서 일반적인 툴팁은 짧은 항목 도움말을 표시하는 역할을 합니다. 툴팁은 활성화 되었을 때에만 표시됩니다. DG가 초기화되면 툴팁이 자동으로 활성화됩니다. DGDisableToolTips를 사용하여 툴팁 표시를 비활성화하고, DGEnableToolTips로 다시 활성화할 수 있습니다. 항목 도움말의 세부 버전은 키보드 포커스를 포커스 가능한 다이얼로그 항목으로 설정한 다음, Windows의 [F1] 키 또는 Macintosh의 [Help] 키를 누르거나 항목의 마우스 오른쪽 버튼을 클릭하거나 다이얼로그 캡션의 도움말 [?]을 클릭한 뒤 항목 자체를 클릭함으로써 호출할 수 있습니다.
툴팁과 도움말 앵커 문자열은 DLGH 리소스에 정의되어 있습니다. DLGH 리소스의 리소스 ID는 다이얼로그의 GDLG 리소스의 리소스 ID와 같아야 합니다. Windows에서 Modal 다이얼로그가 DLGH 리소스를 가지고 있는 경우, 작은 [?] 버튼이 다이얼로그 캡션에 나타나는데 항목들에 대하여 문맥에 맞는 도움말을 사용할 수 있습니다.
Modal 다이얼로그들은 굵은 윤곽선으로 나타나는 소위 기본 버튼이 있습니다. 기본 버튼은 항상 다이얼로그 항목 리스트의 1번째 다이얼로그 항목이어야 합니다. (항목 ID는 DG_OK입니다) 대부분의 Modal 다이얼로그들에는 항목 리스트에서 2번째가 되어야 하는 Cancel 버튼도 있습니다. (항목 ID는 DG_CANCEL입니다) 특별한 경우를 제외하고, ENTER 또는 ESC 키를 누르는 것은 각각 기본값 또는 취소 버튼을 누르는 것과 같은 효과를 갖습니다. 자세한 내용은 다이얼로그 키보드 인터페이스 페이지를 보십시오.
Modal 다이얼로그들은 항상 다이얼로그의 제목이 있는 두꺼운 상단 캡션을 가지고 있습니다. Windows에서 캡션에는 왼쪽에 애플리케이션의 아이콘이 있는 시스템 메뉴가 포함되어 있습니다. 상자 닫기 및 선택적으로 오른쪽에 도움말 버튼이 있습니다. 상자 닫기를 클릭하면 Cancel 버튼(또는 다이얼로그에 Cancel 버튼이 없는 경우 OK)을 클릭하는 것과 동일한 효과가 있습니다. 만약 다이얼로그가 성장할 수 있는 경우, Macintosh에서는 다이얼로그의 오른쪽 하단 모서리에 작은 크기의 상자가 나타납니다. Windows에서는 두꺼운 프레임이 사용자가 다이얼로그의 크기를 조정할 수 있음을 나타냅니다.
다이얼로그 GRC 사양
'GDLG' resID Modal [| frameFlag | growFlag | captionFlag] x y dx dy "dlgTitle" { dialogItem1 ... dialogItemi ... dialogItemn }
여기서 resID는 Modal 다이얼로그의 리소스 ID입니다. Modal 키워드는 OR (|) 연산자를 사용하여 옵션 frameFlag, growFlag, captionFlag와 결합할 수 있습니다. 만약 frameFlag가 생략되면 다이얼로그는 일반 프레임을 가집니다. 만약 growFlag가 생략되면 다이얼로그는 성장할 수 없습니다. 만약 captionFlag가 지정되지 않은 경우 다이얼로그는 기본으로 상위 캡션을 갖게 됩니다. x와 y는 다이얼로그의 좌상단 코너의 픽셀 좌표입니다. dx와 dy는 다이얼로그의 폭과 높이의 픽셀 크기입니다. dlgTitle은 다이얼로그의 타이틀을 정의합니다. dialogItemi (1 <= i <= n)는 다이얼로그 항목들의 n 조각들을 지정합니다. 다양한 다이얼로그 항목들의 GRC 사양에 대해서는 DG 다이얼로그 항목들 페이지를 보십시오.
frameFlag의 가능한 값들은 다음과 같습니다:
-
값 의미 normalFrame 다이얼로그는 일반 다이얼로그 프레임을 갖습니다. thickFrame 다이얼로그는 두꺼운 프레임을 갖습니다. noFrame 다이얼로그는 프레임이 없습니다.
growFlag의 가능한 값들은 다음과 같습니다:
-
값 의미 noGrow 다이얼로그는 크기를 바꿀 수 없습니다. hGrow 다이얼로그의 크기는 가로 방향으로 바뀔 수 있습니다. vGrow 다이얼로그의 크기는 세로 방향으로 바뀔 수 있습니다. grow 다이얼로그의 크기는 가로/세로 방향으로 바뀔 수 있습니다.
captionFlag의 가능한 값들은 다음과 같습니다:
-
값 의미 noCaption 다이얼로그는 캡션이 없습니다.
도움말 GRC 사양
설명
Modal 다이얼로그의 크기, 제목 및 내용은 GDLG 리소스뿐만 아니라 런타임 중에도 지정할 수 있습니다. 만약 당신이 resId 파라미터가 0인 DGModalDialog 함수를 호출하면 DG는 성장할 수 없는 빈 다이얼로그를 만듭니다. 다이얼로그 콜백 함수에서 DG_MSG_INIT 메시지를 처리할 때 다이얼로그를 원하는 크기로 조정할 수 있으며 다이얼로그 관련 함수들을 호출하여 제목 및 기타 속성들을 설정할 수 있습니다. 그런 다음 DGAppendDialogItem 함수를 사용하여 다이얼로그를 항목들로 채울 수 있습니다.
다이얼로그 콜백 함수의 포인터는 DGModalDialog 함수의 dCallBack 파라미터에 전달되어야 합니다. 버튼과 정적 항목만 있는 가장 간단한 Modal 다이얼로그(정적 텍스트, 그림, 아이콘 등)들의 경우 콜백 함수를 구현할 필요가 없습니다. 이 경우 DGModalDialog는 버튼을 클릭해야만 리턴합니다.
DGModalDialog로 Modal 다이얼로그를 생성한 뒤, DG는 자체 메시지 루프를 시작하여 전체 애플리케이션에 대한 메시지 큐의 임시 제어권을 갖습니다. DG는 시스템-지정 메시지를 DG 메시지로 변환하여 다이얼로그 콜백 함수로 보냅니다. Modal 다이얼로그가 열려 있는 동안, 다른 다이얼로그는 DG_MSG_UPDATE 메시지만 수신할 수 있습니다.
DGModalDialog는 Modal 다이얼로그가 닫혀 있는 경우에만 리턴합니다. 사용자는 보통 OK 또는 Cancel 버튼을 클릭하여 Modal 다이얼로그를 닫습니다. 다이얼로그 콜백 함수는 DG_OK 또는 DG_CANCEL을 item 파라미터로 하는 DG_MSG_CLICK 메시지를 수신합니다. Windows에서는 만약 사용자가 캡션에서 상자 닫기를 클릭하면 item 파라미터는 DG_CANCEL(또는 다이얼로그에 Cancel 버튼이 없는 경우 DG_OK)입니다. 다이얼로그는 콜백 함수가 DG_MSG_CLICK 메시지에 대해 0이 아닌 값(일반적으로 DG_OK 또는 DG_CANCEL)을 리턴하는 경우에만 닫힙니다. 애플리케이션은 이 리턴 값을 사용하여 Modal 다이얼로그가 작업을 성공적으로 완료했는지 또는 사용자가 취소했는지 여부를 결정할 수 있습니다.
DGAbortModalDialog 함수를 호출하여 Modal 다이얼로그를 종료할 수도 있습니다. 이 경우 다이얼로그 콜백 함수는 DG_MSG_CLOSE 메시지를 수신하고, item 파라미터는 DG_ABORT를 받고, DGModalDialog는 DG_ABORT를 리턴합니다.
참고사항
다이얼로그 타입, 콜백 함수, DG 메시지, 다이얼로그 항목 타입, 다이얼로그 키보드 인터페이스
다이얼로그 관련 함수, DGAppendDialogItem, DGBlankModalDialog, DGModalDialog, DGSetItemHelpIndex
다이얼로그 도움말의 GRC 사양