기술적 세부사항 - Modeless 팔레트
이 단락에서는 애드온이 Modeless 팔레트를 작성하는 방법에 대해 설명합니다.
Modeless 팔레트의 주요 사용법은 ArchiCAD와 애드온 간에 상호 작용하는 데 사용할 수 있는 사용자 정의 툴바를 만드는 것입니다.
Modeless 팔레트를 사용하는 애드온 개발의 주요 요점은 다음과 같습니다:
- 창 타입은 'GDLG' 리소스에서
Palette
로 선언되어야 합니다. 팔레트의 리소스 ID는 32400과 32499 사이 값이어야 합니다. 이는 다른 Modal 및 Modeless 팔레트의 다이얼로그 ID와 충돌을 피하기 위한 규칙입니다. Modal 다이얼로그들에 대한 리소스 ID는 32500에서 32767 사이 값일 수 있습니다. - 당신의 애드온의 코드에서 Modeless 팔레트를 초기화하려면, 항상 DG 모듈의
DGModelessInit
함수를 사용하십시오. - dialog ID는 DG 다이얼로그의 resource ID와 다를 수 있음을 참고하십시오.
일반적으로 서버 애플리케이션에서 이미 초기화된 동일한 리소스 ID가 있는 팔레트가 없는 경우 두 값은 동일합니다.
다이얼로그 ID들은 고유해야 하므로, 다른 애드온에서 이미 리소스 ID를 사용한 경우 DG 모듈은 초기화 단계에서 팔레트의 다이얼로그 ID에 번호를 다시 매길 것입니다.
이 때문에 당신은 다이얼로그 ID(
DGModelessInit
의 리턴 값)를 저장하고, 상수 리소스 ID 대신 당신의 팔레트에 대한 참조로 사용해야 합니다. - 일단 팔레트를 초기화하면 애드온이 메모리에 저장되고 팔레트 콜백 함수가 호출되어 DG 메시지들을 처리합니다.
애드온에 속하는 모든 팔레트를 닫은 후, 메모리 레지던트(다른 이유로 메모리에 보관되지 않는 한)가 되는 것을 멈춘다.
- 어떤 경우에는 (예. 사용자 입력 중에) 서버 애플리케이션은 팔레트에 대한 사용자 액션 타입 메시지를 차단합니다.
이 기간 동안 인터페이스 요소들을 비활성화하여 팔레트의 기능에 접근할 수 없다는 것을 사용자에게 알리는 것은 애드온의 책임입니다.
서버 애플리케이션은
DG_MSG_API_ENABLEPALETTE
메시지를 보내 이 상황의 시작과 종료에 대해 당신의 코드에게 알립니다.
당신의 애드온에서 사용자 입력을 시작하는 경우, 다이얼로그 콜백들이 차단되지 않고DG_MSG_API_ENABLEPALETTE
메시지 대신DG_MSG_API_ININPUTPALETTE
메시지를 수신하여 필요한 다이얼로그 항목들을 계속 사용할 수 있도록 해줍니다. (예. 입력 수식어(modifier)) - 당신의 애드온이 이미 초기화된 Modeless 팔레트를 가지고 있으면, ArchiCAD의 Windows/Floating Palettes 메뉴에서 사용자가 호출한 Show/Hide All Palettes 커맨드에도 반응할 수 있습니다.
팔레트 콜백은 모든 팔레트를 숨기거나 표시할 때마다
DG_MSG_API_SHOWHIDEPALETTE
메시지를 받습니다. 만약 당신의 애드온이 메뉴 구조에 삽입된 "Show/Hide My Palette"와 같은 메뉴 커맨드를 갖고 있으면, 당신은 팔레트를 숨기거나 표시하고 적절한 메뉴 텍스트를 변경하여 이 메시지를 처리하도록 요청 받습니다. - 창은 어떤 키보드 메시지도 받을 수 없고 오직 마우스 이벤트만 받습니다.
- APIIo_GetPointID와 같이 당신이 ArchiCAD에서 입력을 원한다면, 모든 Modal 창을 닫는 것을 기억하십시오.