콜백 함수
애플리케이션은 각 Modal, Modeless, and Palette 다이얼로그에 대한 콜백 함수를 구현해야 합니다. 콜백 함수는 DG 메시지와 함께 호출되어 DG에서 처리하지 않는 사용자 동작을 처리합니다. 콜백 함수의 프로토타입은 다음과 같습니다:
typedef short (*DGDialCallBack) ( short message, short dialId, short itemId, DGUserData userData DGMessageData msgData );
파라미터
- message
- DG 메시지들 중 하나입니다.
- dialId
- 다이얼로그 또는 탭 페이지의 ID입니다.
- itemId
- 다이얼로그 항목의 1-기반 인덱스입니다.
- userData
- 다이얼로그의 사용자 지정 데이터입니다.
- msgData
- 메시지 지정 데이터입니다.
리턴 값
콜백 함수의 리턴 값은 다음 경우들을 제외하고는 조사되어 있지 않습니다:
-
메시지 항목 타입 값 의미 DG_MSG_CLICK 푸시 버튼 버튼의 인덱스입니다. 다이얼로그는 닫히게 됩니다. 0 다이얼로그는 닫히지 않게 됩니다. 탭 컨트롤 1 탭 페이지의 변경을 허용하지 않습니다. 0 탭 페이지의 변경을 허용합니다. 트리 뷰 1 이전 선택을 유지하고 클릭 이벤트의 추가 처리를 생략합니다. 이 메시지는 사용자가 트리 항목의 상태 아이콘을 클릭한 경우에만 전송됩니다. 0 클릭 메시지는 일반적인 방법으로 처리됩니다. DG_MSG_CONTEXTMENU 1 메시지는 처리되고 컨텍스트 메뉴 이벤트의 추가 처리는 생략합니다. 0 메시지는 처리되지 않습니다. 컨텍스트 인식 도움말이 표시됩니다. DG_MSG_FILTERCHAR Edit 컨트롤 1 문자가 필터링됩니다. 0 문자가 필터링되지 않습니다. DG_MSG_HOTKEY 1 핫키가 처리되고 키보드 이벤트의 추가 처리는 생략합니다. 0 핫키가 처리되지 않습니다. 키보드 이벤트 처리가 진행 중입니다. DG_MSG_ITEMHELP 1 메시지가 처리되고 도움말 텍스트가 애플리케이션에 의해 리턴됩니다. 0 메시지가 처리되지 않습니다. 가능하다면 GRC 리소스로부터 도움말 텍스트가 표시될 것입니다. DG_MSG_LISTHEADERCLICK 리스트 박스 1 이벤트가 애플리케이션에 의해 처리되고 클릭 이벤트의 추가 처리는 생략합니다. 0 메시지는 처리되지 않습니다. 클릭 이벤트 처리가 진행 중입니다. DG_MSG_LISTHEADERDRAG 리스트 박스 1 이벤트가 애플리케이션에 의해 처리되고 드래그 이벤트의 추가 처리는 생략합니다. 0 메시지가 처리되지 않습니다. 드래그 이벤트 처리가 진행 중입니다. DG_MSG_LISTHEADERRESIZE 리스트 박스 1 이벤트가 애플리케이션에 의해 처리되고 리사이징 이벤트의 추가 처리는 생략합니다. 0 메시지가 처리되지 않습니다. 리사이징 이벤트 처리가 진행 중입니다. DG_MSG_LISTHEADERBUTTONCLICK 리스트 박스 1 이벤트가 애플리케이션에 의해 처리되고 클릭 이벤트의 추가 처리는 생략합니다. 0 메시지가 처리되지 않습니다. 클릭 이벤트 처리가 진행 중입니다. DG_MSG_MOUSEMOVE 리스트 박스 DG_LIST_INDRAGAREA 커서가 리스트 항목의 드래그 영역 위에 있습니다. 0 커서가 드래그 영역 위에 있지 않습니다. 사용자 항목 1 애플리케이션이 커서를 원하는 커스텀 폼으로 변경합니다. 0 기본 화살표 커서를 사용자 항목에서 사용할 수 있습니다. DG_MSG_NULL 아무 양수. 다이얼로그가 닫히게 됩니다. 0 다이얼로그가 닫히지 않게 됩니다. DG_MSG_WHEELTRACK 1 메시지가 처리되고 휠 이벤트의 추가 처리는 생략합니다. 0 메시지가 처리되지 않습니다. 휠 이벤트 처리가 진행 중입니다.
다른 모든 경우에는 애플리케이션이 0을 리턴해야 합니다.
설명
콜백 함수에 대한 포인터는 DGModalDialog 또는 DGModelessInit 함수의 dCallBack 파라미터로 전달되어야 합니다. 버튼과 정적 항목(정적 텍스트, 그림, 아이콘 등)만 있는 가장 간단한 Modal 다이얼로그의 경우, 콜백 함수를 구현할 필요가 없습니다. 이 경우 DGModalDialog는 버튼을 클릭해야만 리턴합니다.
탭 페이지는 다이얼로그 콜백 함수가 없기 때문에 특별한 다이얼로그입니다. 탭 페이지의 제어를 위한 메시지들은 메인 다이얼로그(탭 컨트롤이 포함된 다이얼로그)의 콜백 함수로 전송됩니다. 그러나 이러한 메시지들의 경우, 탭 페이지 서브 다이얼로그의 ID는 메인 다이얼로그의 ID 대신 dialId 파라미터의 콜백 함수로 전달됩니다.
특정 다이얼로그 항목 대신 대화상자와 관련된 DG 메시지들의 경우, itemId 파라미터는 0입니다. 이러한 메시지들은 다음과 같습니다: DG_MSG_ACTIVATE, DG_MSG_GROW, DG_MSG_HOTKEY, DG_MSG_INIT, DG_MSG_NULL
애플리케이션은 모든 다이얼로그에 DGUserData 값을 할당할 수 있습니다. 이 값은 다이얼로그 지정 사용자 데이터를 저장하는 데 사용할 수 있습니다. DGModalDialog 또는 DGModelessInit으로 다이얼로그를 생성할 때, 이 함수들의 userData 파라미터로 주어지거나 DGSetDialogUserData로 나중에 변경할 수 있습니다. 다이얼로그 콜백 함수에서 DG 메시지들을 처리할 때, 이 다이얼로그 지정 데이터는 메시지의 userData 파라미터로 사용할 수 있습니다. 당신은 필요할 때마다 DGGetDialogUserData로 이 값을 가져올 수 있습니다. 모든 다이얼로그 관련 데이터를 사용자 정의 structure로 수집하는 것이 좋습니다. 이 structure를 채운 후, 그것의 포인터를 DGModalDialog 또는 DGModelessInit에게 제공하십시오. 만약 한 다이얼로그에 1개 이상의 탭 페이지가 있으면, 이것들은 공통 사용자 데이터를 갖고 있습니다.
콜백 함수의 msgData 파라미터에서 메시지 지정 데이터를 얻을 수 있습니다. 자세한 내용은 DG 메시지에 대한 설명을 보십시오.
참고사항
다이얼로그 관리자, DG 메시지, Modal 다이얼로그, Modeless 다이얼로그, Palette 다이얼로그, 탭 페이지, 다이얼로그 항목 타입
DGGetDialogUserData, DGModalDialog, DGModelessInit, DGSetDialogUserData