다음을 통해 공유


Menu 요소

하나의 메뉴 항목을 정의합니다. 메뉴는 바로 가기 메뉴, 메뉴, MenuController, MenuControllerLatched, 도구 모음, ToolWindowToolbar 등 6개 종류가 있습니다.

구문

<Menu guid="guidMyCommandSet" id="MyCommand" priority="0x100" type="button">
  <Parent>... </Parent>
  <CommandFlag>... </CommandFlag>
  <Strings>... </Strings>
</Menu>

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성 설명
guid 필수입니다. GUID/ID 명령 식별자의 GUID입니다.
id 필수입니다. GUID/ID 명령 식별자의 ID입니다.
priority 선택 사항. 메뉴 그룹에서 메뉴의 상대 위치를 지정하는 숫자 값입니다.
toolbarPriorityInBand 선택 사항. 창이 고정될 때 밴드에서 도구 모음의 상대 위치를 지정하는 숫자 값입니다.
type (선택 사항) 요소의 종류를 지정하는 열거형 값입니다.

없는 경우 기본 형식은 Menu입니다.

Context
사용자가 창을 마우스 오른쪽 단추로 클릭할 때 표시되는 바로 가기 메뉴입니다. 바로 가기 메뉴에는 다음과 같은 특징이 있습니다.

- 메뉴를 바로 가기 메뉴로 표시할 때 부모우선 순위 필드를 사용하지 않습니다.
- 하위 메뉴로 사용할 수 있으며 바로 가기 메뉴로도 사용할 수 있습니다. 이 경우 그룹 ID우선 순위 필드가 모두 적용됩니다.
- 일부 경우에는 사용할 수 없습니다.

바로 가기 메뉴는 다음 조건이 충족되는 경우에만 표시됩니다.

- 바로 가기 메뉴를 호스트하는 창이 표시됩니다.
- VSPackage의 마우스 처리기가 창에서 마우스 오른쪽 단추 클릭을 감지한 다음 명령을 처리하는 메서드를 호출합니다.
- 바로 가기 메뉴는 ShowContextMenu 메서드(권장 방법) 또는 ShowContextMenu 메서드를 호출하여 표시됩니다.

메뉴
드롭다운 메뉴를 제공합니다. 드롭다운 메뉴에는 다음과 같은 특징이 있습니다.

- 해당 정의에서 부모를 따릅니다.
- 부모 그룹 또는 그룹에 대한 CommandPlacement가 있어야 합니다.
- 다른 종류의 메뉴에서 하위 메뉴가 될 수 있습니다.
- 부모 메뉴가 표시될 때마다 자동으로 표시됩니다.
- 드롭다운 메뉴를 표시할 VSPackage 코드의 구현이 필요하지 않습니다.

MenuController
일반적으로 도구 모음에서 사용되는 분할 단추 드롭다운 메뉴를 제공합니다. MenuController 메뉴에는 다음과 같은 특징이 있습니다.

- 부모 또는 CommandPlacement를 통해 다른 메뉴에 포함되어야 합니다.
- 해당 정의에서 부모를 따릅니다.
- 모든 종류의 메뉴를 부모로 가질 수 있습니다.
- 부모 메뉴가 표시될 때마다 자동으로 사용할 수 있습니다.
- 메뉴를 표시하기 위해 프로그래밍 방식 지원이 필요하지 않습니다.

분할 단추 메뉴의 명령이 메뉴 단추에 표시됩니다. 표시되는 명령에는 다음 특성 중 하나가 있습니다.

- 명령이 계속 표시되고 활성화되는 경우 사용된 마지막 명령입니다.
- 첫 번째 표시된 명령입니다.

MenuControllerLatched
명령을 래치됨으로 표시하여 명령을 기본 선택 항목으로 지정할 수 있는 분할 단추 드롭다운 메뉴를 제공합니다.

래치된 명령은 일반적으로 확인 표시를 통해 메뉴에서 선택된 것으로 표시되는 명령입니다. IOleCommandTarget 인터페이스의 QueryStatus 메서드 구현에서 OLECMDF_LATCHED 플래그가 설정된 경우 명령을 래치됨으로 표시할 수 있습니다. MenuControllerLatched 메뉴에는 다음과 같은 특징이 있습니다.

- 부모 그룹 또는 CommandPlacement를 통해 다른 메뉴에 포함되어야 합니다.
- 해당 정의에서 부모를 따릅니다.
- 모든 종류의 메뉴를 부모로 가질 수 있습니다.
- 부모 메뉴가 표시될 때마다 사용할 수 있습니다.
- 메뉴를 표시하기 위해 프로그래밍 방식 지원이 필요하지 않습니다.

분할 단추 메뉴의 명령이 메뉴 단추에 표시됩니다. 표시되는 명령에는 다음 특성 중 하나가 있습니다.

- 래치되는 첫 번째 표시된 명령입니다.
- 첫 번째 표시된 명령입니다.

도구 모음
도구 모음을 제공합니다. 도구 모음에는 다음과 같은 특징이 있습니다.

- 해당 정의에서 부모를 무시합니다.
- 그룹의 하위 메뉴로 만들 수 없으며 CommandPlacement를 사용해도 마찬가지입니다.
- 보기 메뉴에서 도구 모음을 클릭하여 항상 표시할 수 있습니다.
- VisibilityItem을 사용하여 표시할 수 있습니다.
- 도구 모음을 만드는 코드가 필요하지 않습니다. 도구 모음을 만드는 방법에 대한 예제는 도구 모음 추가를 참조하세요.

ToolWindowToolbar
도구 모음이 개발 환경에 연결된 것과 마찬가지로 특정 도구 창에 연결된 도구 모음을 제공합니다.

- 해당 정의에서 부모를 무시합니다.
- 그룹의 하위 메뉴로 만들 수 없으며 CommandPlacement를 사용해도 마찬가지입니다.
- 도구 모음을 호스트하는 도구 창이 표시되고 VSPackage가 명시적으로 도구 모음을 도구 창에 추가하는 경우에만 표시됩니다. 이 작업은 일반적으로 도구 창 프레임에서 도구 모음 호스트 속성(IVsToolWindowToolbarHost 인터페이스로 표시됨)을 가져온 다음 AddToolbar 메서드를 호출하여 도구 창을 만들 때 수행됩니다.
조건 선택 사항. 조건부 특성을 참조하세요.

자식 요소

요소 설명
부모 선택 사항. 메뉴 항목의 부모 요소입니다.
CommandFlag 필수입니다. 명령 플래그 요소를 참조하세요. Menu의 유효한 CommandFlag 값은 다음과 같습니다.

- AlwaysCreate
- DefaultDocked
- DefaultInvisible - 이 플래그는 도구 모음 표시에 영향을 주지 않습니다.
- DontCache
- DynamicVisibility - 이 플래그는 도구 모음 표시에 영향을 주지 않습니다.
- IconAndText
- NoCustomize
- NotInTBList
- NoToolbarClose
- TextChanges
- TextIsAnchorCommand
문자열 필수입니다. 요소를 참조하세요. 자식 ButtonText 요소를 정의해야 합니다.
주석 선택적인 주석입니다.

부모 요소

요소 설명
Menus 요소 VSPackage가 구현하는 모든 메뉴를 정의합니다.

예시

<Menu guid="cmdGuidWidgetCommands" id="menuIDEditWidget"
  priority="0x0002" type="Menu">
  <Parent guid="cmdSetGuidWidgetCommands" id="groupIDFileEdit"/>
  <CommandFlag>AlwaysCreate</CommandFlag>
  <Strings>
    <ButtonText>Edit Widget</ButtonText>
  </Strings>
</Menu>

참고 항목