DGModelessHandler
시스템 지정 메시지들을 DG 메시지들로 변환하고 그것들을 적절한 Modeless 또는 Palette 다이얼로그의 다이얼로그 콜백 함수에게 보냅니다.
bool DGModelessHandler ( const void* sysMessage, bool onlyUpdate );
파라미터
- sysMessage
-
플랫폼 의미 Macintosh EventRecord structure에 대한 포인터입니다. Windows MSG structure에 대한 포인터입니다. - onlyUpdate
-
값 의미 true 보통 (DG_DS_NORMAL) 상태를 가진 Modeless 및 Palette 다이얼로그들에 대하여 업데이트 메시지들만 처리됩니다. false 모든 다이얼로그 관련 메시지들이 처리됩니다.
리턴 값
-
값 의미 true 메시지가 처리되었습니다. false 메시지가 처리되지 않았습니다.
설명
만약 애플리케이션이 1개 이상의 Modeless 그리고/또는 Palette 다이얼로그를 갖고 있으면, 당신은 그것들과 관련된 메시지들을 처리하기 위해 DGModelessHandler를 사용해야 합니다. 애플리케이션의 메시지 루프 안에서 시스템 지정 메시지를 받은 직후 이 함수를 호출하십시오.
DGModelessHandler는 우선 시스템 지정 메시지가 다이얼로그 메시지인지 아닌지 테스트합니다. 만약 메시지가 다이얼로그를 참조하지 않으면 DGModelessHandler는 false를 리턴하고 메시지는 애플리케이션에 의해 처리되어야 합니다. 그러나 만약 메시지가 다이얼로그를 참조하면, DGModelessHandler는 그것을 DG 메시지로 변환하고 그것을 적절한 다이얼로그 콜백 함수에게 보냅니다. 콜백 함수에서 메시지가 처리되자마자 DGModelessHandler는 true를 리턴합니다. 이 경우, 메시지는 추가 처리가 필요하지 않으며 당신은 다음 메시지를 계속 해야 합니다.
모든 Modeless 및 Palette 다이얼로그는 소위 상태 flag를 갖고 있습니다. 만약 이 flag가 DG_DS_NORMAL이고 onlyUpdate 파라미터의 값이 false이면, 다이얼로그에 대한 모든 메시지들이 처리됩니다. 그러나 만약 onlyUpdate가 true이면, 업데이트 메시지들은 DGModelessHandler에 의해 처리됩니다. 만약 상태 flag가 DG_DS_ENABLED로 세트되면, onlyUpdate의 값에 상관없이 모든 메시지들이 처리됩니다. 만약 상태 flag가 DG_DS_DISABLED로 세트되면, 업데이트 메시지들만 처리됩니다. 상태 flag의 값은 DGSetModelessDialogStatus와 DGGetModelessDialogStatus로 각각 세트하고 가져올 수 있습니다.
이 함수는 DG onlyUpdate flag를 onlyUpdate 파라미터의 값으로 세트합니다.
다이얼로그 상태 flag의 사용법은 다음 예제에서 설명할 수 있습니다. 애플리케이션이 시간을 많이 소모하는 계산과 같은 긴 프로세스를 시작했다고 가정하십시오. 이 경우, 계산을 마치기 전에 Stop 버튼을 가진 프로세스 표시기 다이얼로그를 표시하는 것을 권장합니다. 이 기간 동안 시스템 지정 메시지등를 처리할 때, 당신은 값 true인 onlyUpdate를 갖는 DGModelessHandler를 호출해야 합니다. 이것은 DG_DS_NORMAL 상태인 Modeless 다이얼로그들이 업데이트 메시지를 제외한 다른 메시지들을 처리하지 않게 해줍니다. (이렇게 하면 사용자 액션에 응답하지 않습니다) 사용자가 Stop 버튼을 눌러 프로세스를 취소할 수 있게 하려면 프로세스 표시기 다이얼로그의 상태를 DG_DS_ENABLED로 세트되어야 합니다.
DG_MSG_HOTKEY 메시지들은 특히 DGModelessHandler에서 처리됩니다. DG는 먼저 활성 다이얼로그에 속한 핫키인지 테스트합니다. (다이얼로그가 활성화되어 있고 항목 중 하나가 키보드 포커스를 갖고 있거나, Palette 및 Modeless 다이얼로 큐의 꼭대기에 있을 경우) 만약 그것이 맞으면, DG는 DG_MSG_HOTKEY 메시지를 활성 다이얼로그에게 보냅니다. 만약 핫키 메시지가 애플리케이션에 의해 처리되면(즉, 콜백 함수가 1을 리턴함), 메시지의 처리는 중단되고 DGModelessHandler가 리턴합니다. 그렇지 않으면, DG는 다이얼로그의 큐에서 열린 모든 Palette들을 위치 순서대로 유사하게 테스트합니다. 만약 Palette 다이얼로그 중에서 핫키 메시지를 처리할 수 없으면, DG는 마침내 최상위 Modeless 다이얼로그를 테스트합니다. (만약 있다면)
요구사항
- 버전: DG 2.0.0 또는 이후
- 헤더: DG.h
- 라이브러리 가져오기: DG.lib [WIN]
- 모듈: DGLib [MAC], DG.dll [WIN]
참고사항
DG 함수, Modeless 다이얼로그, Palette 다이얼로그, DG 메시지
콜백 함수, DGCreateBlankModelessDialog, DGCreateBlankPalette, DGCreateBlankDockablePalette, DGCreateModelessDialog, DGCreatePalette, DGCreateDockablePalette, DGGetModelessDialogStatus, DGModelessInit, DGModelessClose, DGSetModelessDialogStatus, DGSetOnlyUpdateFlag