Graphisoft®

Dialog ManagerVersion: 2.0

푸시 메뉴 컨트롤

푸시 메뉴 컨트롤은 우측 하단 모서리에 작은 화살표가 있는 푸시-스타일 체크박스 또는 라디오 버튼처럼 보입니다. 표준 푸시-스타일 컨트롤 동작 외에도 DG 푸시 메뉴 컨트롤은 아이콘 버튼들이 있는 팝업 팔레트를 표시할 수 있습니다.

사용자는 푸시 메뉴 컨트롤을 (왼쪽) 마우스 버튼으로 살짝 눌러 이 팔레트를 팝업시킬 수 있습니다. 현재 선택된 항목이 팝업 메뉴에서 푸시된 것으로 나타납니다. 그 다음에 사용자는 키보드나 마우스 클릭으로 메뉴 항목을 선택할 수 있습니다. 선택된 항목은 푸시 메뉴 컨트롤의 활성 (보이는) 항목이 되고 푸시 메뉴 컨트롤 자체는 체크된 상태가 됩니다.

    

항목 타입

DG_ITM_CHECKBOX
DG_ITM_RADIOBUTTON

서브 타입

DG_BT_PUSHMENUICON

GRC 사양

    IconMenuCheck    x  y  dx  dy  [iconID1] ... [iconIDi] ... [iconIDn]
    IconMenuRadio    x  y  dx  dy  groupID  [iconID1] ... [iconIDi] ... [iconIDn]

xy는 푸시 메뉴 컨트롤의 좌상단 코너의 픽셀 좌표입니다. dxdy는 컨트롤의 너비와 높이의 픽셀 크기입니다. groupID는 컨트롤이 속한 라디오 버튼들의 그룹의 1-기반 인덱스를 정의힙니다. 만약 선택적인 iconIDi (1 <= i <= n) 파라미터들이 존재한다면, 팝업 팔레트에서 아이콘 버튼의 아이콘 리소스 ID를 제공함으로써 푸시 메뉴 항목들의 n 조각들을 초기화합니다. 이 아이콘 ID들은 더 많은 행들로 포장될 수 있습니다.

메시지

메시지 의미
DG_MSG_CHANGE 푸시 메뉴 컨트롤의 체크된 상태 또는 선택된 메뉴 항목이 변경되었습니다. 메시지 데이터로부터 푸시 메뉴 컨트롤의 예전 상태 또는 예전에 선택된 메뉴 항목을 가져오려면, DGGetPrevItemValDGGetPrevMenuItem 매크로를 각각 사용하십시오.
DG_MSG_DOUBLECLICK 푸시 메뉴 컨트롤을 더블 클릭했습니다. 메시지 데이터 파라미터는 항상 0입니다.

수정 Flag

DGPushMenuCheck 함수는 다이얼로그 콜백 함수에서 DG_MSG_INIT 메시지를 처리할 때 호출되는 경우를 제외하고 푸시 메뉴 컨트롤의 수정 flag를 세트합니다. flag는 또한 DG_MSG_CHANGE 메시지를 생성하는 사용자 액션에 의해서도 세트될 수 있습니다. 라디오 버튼-타입 푸시 메뉴 컨트롤의 경우, 동일한 그룹에 있는 모든 라디오 버튼의 수정 flag도 세트됩니다. 수정 flag의 상태를 가져오거나 리셋(지우기)하려면 DGModified 또는 DGResetModified를 사용하십시오.

설명

푸시 메뉴 컨트롤에서 메뉴 항목들의 수를 늘리거나 줄이려면 DGPushMenuSetItemCount를 호출하십시오. 푸시 메뉴 컨트롤에서 현재 메뉴 항목들의 수를 가져오려면 DGPushMenuGetItemCount를 호출하십시오. DG 버전 1.1.1 전에는 이 함수들을 사용할 수 없으므로 대신 DGSetItemMaxLongDGGetItemMaxLong을 사용하십시오.

푸시 메뉴 컨트롤 항목의 아이콘을 세트하는 방법은 2가지가 있습니다. 하나는 DGPushMenuSetItemIcon으로 아이콘 핸들을 이용하여 아이콘을 지정하는 것이고, 다른 하나는 DGPushMenuSetItemIconId 또는 DGPushMenuSetItemIconResource로 리소스 ID를 이용하여 아이콘을 지정하는 것입니다. 아이콘 핸들은 DGPushMenuGetItemIcon으로 가져올 수 있습니다. 아이콘의 아이콘 ID와 리소스 모듈 ID는 DGPushMenuGetItemIconId, DGPushMenuGetItemIconResource로 각각 가져올 수 있습니다.

팝업 팔레트의 메뉴 항목들은 DGPushMenuDisableItem로 비활성화할 수 있습니다. 비활성화된 메뉴 항목들은 팔레트 상에 회색으로 보이고 선택할 수 없습니다. DGPushMenuDisableItem 함수는 현재 선택된 푸시 메뉴 항목에 사용해서는 안 됩니다. 이것은 푸시 메뉴에서 최소한 1개의 활성화된 메뉴 항목이 있어야 한다는 것을 의미합니다. 만약 모든 메뉴 항목들을 비활성화하려면, DGDisableItem을 사용하여 푸시 메뉴 컨트롤 자체를 비활성화하십시오. 예전에 비활성화된 메뉴 항목들은 DGPushMenuEnableItem으로 다시 활성화시킬 수 있습니다. 메뉴 항목이 활성화되어 있는지 여부를 테스트하려면 DGPushMenuIsItemEnabled를 호출하십시오.

푸시 메뉴 컨트롤은 선택된 (활성) 메뉴 항목이 단 하나만 있습니다. 현재 선택된 메뉴 항목의 아이콘은 컨트롤의 버튼 표면에 나타납니다. 푸시 메뉴 팝업 팔레트가 펼쳐지면, 사용자는 보통 방식대로 마우스 클릭이나 키 누름을 통해 현재 선택을 변경할 수 있습니다. 선택은 사용자 액션뿐만 아니라 DGPushMenuSelectItem 함수를 호출함으로써 프로그램 코드를 통해서도 변경될 수 있습니다. 현재 선택된 메뉴 항목은 DGPushMenuGetSelected로 가져올 수 있습니다.

만약 푸시 메뉴 컨트롤의 항목 타입이 DG_ITM_RADIOBUTTON이면, 동일한 다이얼로그 또는 탭 페이지의 다른 라디오 버튼들과 함께 그룹화될 수 있습니다. 그룹화 정보는 GRC에서만 지정할 수 있습니다. (사용자 액션 또는 프로그램 코드를 통해) 그룹의 라디오 버튼을 켤 때, DG는 자동으로 그룹의 다른 라디오 버튼들을 끕니다. 만약 그룹 내 라디오 버튼이 사용자 액션에 의해 켜지면, 다이얼로그 콜백 함수는 라디오 버튼을 눌렀을 때에만 DG_MSG_CHANGE로 호출됩니다. 그러나 그룹 내에 있는 모든 라디오 버튼들의 수정 flag가 세트됩니다. (DGModified가 1을 리턴하게 됨) 그룹 내 체크된 라디오 버튼의 1-기반 인덱스를 가져오려면 DGGetCheckedRadio를 사용하십시오.

푸시 메뉴 컨트롤을 켜거나(체크됨), 끄려면(체크안됨) DGPushMenuCheck를 호출하십시오. 라디오 버튼-타입 푸시 메뉴 컨트롤들은 이 함수 호출로 체크를 해제할 수 없음을 참고하십시오. 푸시 메뉴 컨트롤의 체크된 상태를 가져오려면 DGPushMenuIsChecked를 사용하십시오. DG 버전 1.1.1 이전에는 DGPushMenuCheckDGPushMenuIsChecked 대신 DGSetItemValLongDGGetItemValLong을 사용하십시오..

요구사항

버전: DG 2.0.0 또는 이후
헤더: DG.h

참고사항

다이얼로그 항목 타입, 체크박스, 라디오 버튼
푸시 메뉴 지정 함수, DGGetItemMaxLong, DGGetItemValLong, DGModified, DGResetModified, DGSetItemMaxLong, DGSetItemValLong, 콜백 함수
DG_MSG_CHANGE, DG_MSG_DOUBLECLICK, DG_MSG_INIT