다음을 통해 공유


방법: 메뉴, 하위 메뉴, 바로 가기 메뉴 만들기

있는 VSPackage Visual Studio 통합된 개발 환경 (IDE)에 메뉴를 추가 하려면 사용 해야 해당 Visual Studio SDK 메뉴 명령 그룹에 대 한 아키텍처입니다. 명령을 다시 사용 하 고 공유 구성 요소 및 환경 사이에서 명령 그룹 메뉴를 사용 합니다. 메뉴 명령 그룹에 대 한 자세한 내용은 참조 하십시오. Vspackages에 IDE 사용자 인터페이스 요소를 추가 하는 방법.

메뉴 정의 된 Vspackages에 있는 메뉴 .vsct 파일의. .Vsct 파일 메뉴 및 도구 모음을 정의 그룹 및 명령. 기능을 수행 하려면 사용자가 클릭 하는 명령이입니다. 그룹 명령 및 메뉴에 대 한 컨테이너입니다. 메뉴 그룹에 대 한 컨테이너입니다. 따라서 기본 메뉴를 만들려면 메뉴, 명령 그룹 및 하나 이상의 명령을 만들어야 합니다.

메뉴에 표시할 수 있는 세 가지 기본 방법이 Visual Studio, 다음과 같이 하십시오.

  • 주 메뉴 표시줄에서 메뉴 이름으로.

  • 다른 메뉴의 하위 메뉴로.

  • 바로 가기 메뉴는 (일반적으로 마우스 오른쪽 클릭으로 표시).

이 항목에서는 각 종류의 메뉴를 만드는 방법을 보여 줍니다. 다음 연습에서는 또한이 작업을 수행 하는 방법을 보여 줍니다.

메뉴, 하위 메뉴 또는 바로 가기 메뉴를 만들려면

  1. 프로젝트의.vsct 파일을 편집기에서 열을 두 번 클릭 합니다.

    프로젝트에.vsct 파일이 없으면 하나를 추가 합니다. Visual Studio 패키지 템플릿을 사용 하 여 패키지를 만드는 경우 선택한 메뉴 명령을. 이.vsct 파일을 생성 합니다.

  2. 에 Symbols 섹션에서 찾을 GuidSymbol 그룹 및 명령을 포함 하는 요소입니다.

  3. 만들기는 IDSymbol 각 메뉴, 그룹, 또는 명령을 추가 하려면 다음 예제에서와 같이 원하는 요소입니다.

    <GuidSymbol name="guidButtonGroupCmdSet" value="{f69209e9-975a-4543-821d-1f4a2c52d737}">
      <IDSymbol name="MyMenuGroup" value="0x1020" />
      <IDSymbol name="cmdidMyCommand" value="0x0100" />
    </GuidSymbol>
    

    name 의 특성의 GuidSymbol 및 IDSymbol 요소가 각 새 메뉴 그룹 또는 명령에 대 한 GUID:ID 쌍을 제공 합니다. GUID 하면 Vspackage에 정의 된 명령 집합을 나타냅니다. 여러 명령 집합을 정의할 수 있습니다. 각 GUID:ID 쌍은 고유 해야 합니다.

  4. 새 메뉴에서 정의 Menus 섹션에 다음과 같은:

    1. 설정에서 guid 및 id guid:id의 새로운 메뉴와 일치 하는 필드입니다.

    2. priority 특성을 설정합니다.

      priority 특성 사용.vsct으로 메뉴 간에 부모 그룹에 있는 다른 개체의 위치를 결정 합니다.

      우선 순위 값이 더 낮은 메뉴 전에 높은 우선 순위 값이 있는 메뉴가 표시 됩니다. 중복 된 우선 순위 값은 허용 되 있고 동일한 우선 순위를 가진 메뉴의 상대적인 위치 VSPackages 런타임에 처리 순서에 의해 결정 됩니다 순서는 미리 결정 된 수 없습니다. 생략 하는 priority 특성 값을 0으로 설정 합니다.

      이 호출 하는 코드에서의 위치에 따라 결정 됩니다 때문에 바로 가기 메뉴에 대해 우선 순위를 설정 하지 마십시오.

    3. 메뉴 및 하위 메뉴에 대 한 설정의 type 특성에 메뉴, 일반적인 메뉴를 설명 하는. 설정 바로 가기 메뉴의 경우에 type 특성에 컨텍스트.

      다른 유효한 메뉴 형식 예: 도구 모음 및 메뉴 컨트롤러에 대 한 설명을 참조 하십시오. Menu 요소.

    4. 만들기 메뉴 정의에 문자열 포함 섹션은 를 로드 합니다 IDE에 표시 되는 메뉴의 이름을 포함 하는 요소와는 CommandName 메뉴에 액세스 하는 데 사용 되는 명령 이름을 포함 하는 요소는 명령 을 창.

      단추 텍스트 문자열의 '&' 문자 포함, 사용자가 ALT 키를 눌러 메뉴를 열 수 있습니다 + 문자 바로 뒤에 오는 경우는 '&'.

    5. 명령 플래그를 적절 하 게 모양과 메뉴의 동작을 변경 하려면 추가 합니다. 이 작업을 수행 하려면 추가 된 CommandFlag 메뉴 정의에 요소입니다. 자세한 내용은 명령 플래그 요소를 참조하십시오.

  5. 메뉴의 부모를 설정 합니다. 표준 메뉴 또는 하위 메뉴의 경우이 디자인에 따라 다음 방법 중 하나를 수행 합니다.

    • 에 Menu 요소를 만들는 부모 요소와 집합의 guid 및 id guid:id의 메뉴도 호스트 하는 그룹의 필드는 기본 상위 그룹. 상위 그룹에서 만든 그룹 수는 Symbols 섹션, 그룹에서 다른 패키지 또는 IDE에서 그룹. 예를 들어, IDE의 최상위 메뉴 표시줄에 메뉴를 추가 하려면 근처의 도구 Guidshlmainmenu:idg_vs_mm_toolsaddins에 부모 설정 메뉴에서.

      다음 예제에서는 Visual Studio 메뉴 모음에 표시 되는 메뉴를 보여 줍니다.

      <Menu guid="guidTopLevelMenuCmdSet"
      id="TopLevelMenu" priority="0x700" type="Menu">
        <Parent guid="guidSHLMainMenu"
                id="IDG_VS_MM_TOOLSADDINS" />
        <Strings>
          <ButtonText>TestMenu</ButtonText>
          <CommandName>TestMenu</CommandName>
        </Strings>
      </Menu>
      
    • 생략 될 수 있습니다의 Parent 요소를 메뉴의 명령 배치를 사용 하 여 위치에 있는 경우. 만들기는 CommandPlacements 하기 전에 섹션의 Symbols 섹션, 및 추가 CommandPlacement guid:id의 메뉴, 우선 순위 및 부모, 다음 예제에서와 같이 요소.

      <CommandPlacements>
        <CommandPlacement guid="guidButtonGroupCmdSet" id="cmdidMyCommand" priority="0x105">
          <Parent guid="guidButtonGroupCmdSet" id="MyMenuGroup" />
        </CommandPlacement>
      </CommandPlacements>
      

      같은 GUID:ID 및 부모가 서로 다른 여러 개의 명령을 배치 만들기 메뉴의 여러 위치에 표시 됩니다. 자세한 내용은 CommandPlacements 요소를 참조하십시오.

    표준 메뉴 그룹 상위 Visual Studio 메뉴 모음에 있어야 합니다. (상위 메뉴 도구 모음 또는 메뉴 형식의 다른 함) 하위 메뉴에 다른 메뉴 그룹 상위 여야 합니다. 메뉴 또는 하위 메뉴가 표시 될 하나 이상의 활성 명령이 들어 있는 그룹을 호스트 하거나가 해야의 AlwaysCreate 명령 플래그를 설정 합니다.

    바로 가기 메뉴에 명령 배치 하거나 부모가 없습니다. 대신, 코드에서 활성화 해야 합니다. 일반적으로 바로 가기 메뉴 컨트롤 화면에 오른쪽 클릭에 활성화 됩니다. 다음 예제에서는 바로 가기 메뉴를 정의합니다.

    <Menu guid="guidButtonGroupCmdSet" id="ShortcutMenu"
          type="Context">
      <Strings>
        <ButtonText>Shortcut Menu</ButtonText>
        <CommandName>ShortcutMenu</CommandName>
      </Strings>
    </Menu>
    
  6. 그룹 섹션에서 만들기를 그룹 요소를 메뉴에 표시 하는 명령을 포함 합니다. Symbols 섹션 새와 같은 GUID:ID 있는 항목을 포함 해야 Group 요소입니다.

    1. 사용자 메뉴에서 원하는 표시 되는 그룹의 우선 순위를 설정 합니다.

      경계 메뉴에서 각 그룹의 가로 선으로 표시 됩니다.

    2. 부모를이 새 그룹을 만든 메뉴에는 guid:id에 설정 합니다. 이 메뉴에서 일련의 명령 배치 합니다.

    그룹 다음 예제에서는 앞의 예제에서 표시 된 최상위 수준 메뉴 나타납니다.

     <Group guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"
    priority="0x0600">
       <Parent guid="guidTopLevelMenuCmdSet" id="TopLevelMenu"/>
     </Group>
    

    다음 예제에서는 최상위 메뉴에서 그룹에에서 표시 되는 메뉴를 추가 하 여 하위 메뉴가 있습니다.

    <Menu guid="guidTopLevelMenuCmdSet" id="SubMenu"
    priority="0x0100" type="Menu">
      <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"/>
      <Strings>
        <ButtonText>Sub Menu</ButtonText>
        <CommandName>Sub Menu</CommandName>
      </Strings>
    </Menu>
    
  7. 명령 항목을 작성 하 여 메뉴에 명령 추가 단추 구역 및 GUID:ID 그룹에 각각의 부모를 설정 합니다. 각 단추 에 있는 항목에 해당 하는 GUID:ID 해야의 Symbols 섹션.

    사용은 priority 특성의 각 단추 항목 그룹에 명령이 나타나는 순서를 지정 합니다.

    다음 예제에서는 최상위 메뉴에서 표시 되는 명령을 정의 합니다.

    <Button guid="guidTopLevelMenuCmdSet" id="cmdidTestCommand" priority="0x0100" type="Button">
      <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <Strings>
        <CommandName>cmdidTestCommand</CommandName>
        <ButtonText>Test Command</ButtonText>
      </Strings>
    </Button>
    

    단추 및 메뉴 항목에 대 한 자세한 내용은 참조 하십시오. Button 요소.

    코드에서 메뉴 명령을 구현 하는 방법에 대 한 자세한 내용은 방법: 만들고 VSPackages (C#)에서 명령 처리 또는이 항목의 앞부분에서 설명한 연습 합니다.

바로 가기 메뉴를 활성화 하려면

  1. Guid:id의 바로 가기 메뉴를 가져옵니다. 기본적으로 패키지 템플릿을 만듭니다는 GuidList 클래스 명령 집합의 GUID를 저장 하는 PkgCmdID.cs 파일에 있습니다. 또한 서식 파일을 만듭니다의 PkgCmdIdList 클래스는 템플릿에 선언 된 명령 ID 값 정수 PkgCmdId.cs 파일에 있습니다. 서식 파일을 완료 한 후 바로 가기 메뉴 및 모든 추가 명령 선언 되어야 합니다. 다음 예제에서는 이러한 선언을 보여 줍니다.

    static class PkgCmdIDList
    {
    
        public const uint cmdidColorChange =    0x101;
        public const int ColorMenu = 0x1000;
    
        public const int cmdidRed = 0x102;
        public const int cmdidYellow = 0x103;
        public const int cmdidBlue = 0x104;
    
    };
    

    GUID 및 ID 값을 직접 사용 되는 경우이 단계를 생략할 수 있습니다. 그러나 여기서는 읽기 쉽도록 값을 설정 하는 것이 좋습니다.

  2. 이벤트 처리기를 연결 합니다. 일반적으로 다음 예제에서와 같이 제어 서피스를 마우스 오른쪽 단추로 바로 가기 메뉴 연결 합니다.

    private void MyToolWindow_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
        OleMenuCommandService mcs = this._parent.mcs;
        if (null != mcs)
        {
            CommandID menuID = new CommandID(
                GuidList.guidTWShortcutMenuCmdSet,
                PkgCmdIDList.ColorMenu);
            Point p = this.PointToScreen(e.GetPosition(this));
            mcs.ShowContextMenu(menuID, (int)p.X, (int)p.Y);
        }
    }
    

    PointToScreen 메서드는 화면 위치를 기준으로 컨트롤 클릭 위치 변환 합니다. ShowContextMenu 메서드는 바로 가기 메뉴를 표시 합니다.

    이벤트 처리기를 포함 하는 파일을 포함 해야 합니다는 System.ComponentModel.Design 네임 스페이스에 액세스 하는 OleMenuCommandService 클래스를 하는 Microsoft.VisualStudio.Shell 네임 스페이스에 액세스 하는 IMenuCommandService 인터페이스.

    using Microsoft.VisualStudio.Shell;
    using System.ComponentModel.Design;
    

참고 항목

작업

방법: 만들고 VSPackages (C#)에서 명령 처리

개념

VSCT XML 스키마 참조

기타 리소스

일반적인 작업 명령, 메뉴 및 도구 모음 사용