다음을 통해 공유


연습: 도구 모음에 있는 메뉴 컨트롤러 추가

이 연습에서는 빌드 추가 도구 모음 도구 창 연습 메뉴 컨트롤러 도구 창 도구 모음에 추가 하는 방법을 보여 줍니다. 여기에 나와 있는 단계에이 연습에서 만든 도구 모음도 적용 될 수 있습니다 추가 ide 도구 모음.

메뉴 컨트롤러 분할 컨트롤입니다. 마지막으로 사용한 명령을 메뉴 컨트롤러의 왼쪽된에 있는 표시 및 클릭 하 여 실행할 수 있습니다. 메뉴 컨트롤러의 오른쪽 화살표는, 클릭 했을 때, 명령 목록이 열립니다. 명령 목록에서 명령 실행을 클릭 하 고 명령을 메뉴 컨트롤러의 왼쪽에 대체 하면 됩니다. 이 이렇게 하면 마지막으로 사용한 명령 목록에서 항상 표시 하는 명령 단추와 같은 메뉴 컨트롤러를 작동 합니다.

메뉴 컨트롤러에 나타날 수 있지만 도구 모음에는 가장 자주 사용 됩니다.

이 연습에서는.vsct 파일에 정의 된 세 가지 선택할 수 있는 옵션을 제공 하는 메뉴 컨트롤러를 보여 줍니다. 메뉴 및.vsct 파일에 대 한 자세한 내용은 명령, 메뉴 및 도구 모음.

사전 요구 사항

이 연습을 완료 하려면 설치 해야 해당 Visual Studio 2010 SDK.

참고

Visual Studio SDK에 대 한 자세한 내용은 참조 하십시오. Visual Studio 개요를 확장합니다..Visual Studio SDK를 다운로드 하는 방법를 참조 하십시오. Visual Studio 확장성 개발자 센터 MSDN 웹 사이트에서.

메뉴 컨트롤러 만들기

메뉴 컨트롤러를 만들려면

  1. 에 설명 된 절차에 따라 연습: 도구 창에는 도구 모음 추가 도구 창 도구 모음에 있는 Vspackage를 만들 수 있습니다.

  2. 솔루션 탐색기, TWToolbar.vsct 텍스트 편집기에서 열려면 두 번 클릭 합니다.

  3. 기호 섹션에 GuidSymbol 메뉴 컨트롤러, 컨트롤러 그룹 메뉴 및 세 가지 메뉴 항목이 "guidTWToolbarCmdSet" 라는 요소를 선언 합니다.

    <IDSymbol name="TestMenuController" value="0x1300" />
    <IDSymbol name="TestMenuControllerGroup" value="0x1060" />
    <IDSymbol name="cmdidMCItem1" value="0x0130" />
    <IDSymbol name="cmdidMCItem2" value="0x0131" />
    <IDSymbol name="cmdidMCItem3" value="0x0132" />
    
  4. 메뉴 섹션에서 마지막 메뉴 항목 뒤 정의 메뉴 컨트롤러에 메뉴를 사용 합니다.

    <Menu guid="guidTWToolbarCmdSet" id="TestMenuController" priority="0x0100" type="MenuController">
      <Parent guid="guidTWToolbarCmdSet" id="TWToolbarGroup" />
      <CommandFlag>IconAndText</CommandFlag>
      <CommandFlag>TextChanges</CommandFlag>
      <CommandFlag>TextIsAnchorCommand</CommandFlag>
      <Strings>
        <ButtonText>Test Menu Controller</ButtonText>
        <CommandName>Test Menu Controller</CommandName>
      </Strings>
    </Menu>
    

    TextChanges 및 TextIsAnchorCommand 플래그 반영 마지막 선택한 명령을 메뉴 컨트롤러를 사용 하도록 설정 하기 위해 포함 해야 합니다.

  5. 그룹 구역의 마지막 그룹 항목 다음 메뉴 컨트롤러 그룹을 추가 합니다.

    <Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" />
    </Group>
    

    메뉴 컨트롤러 부모로 설정 하 여이 그룹에 배치 된 명령을 메뉴 컨트롤러에 표시 됩니다. priority 특성이 생략, 어떤의 기본값 설정 0, 그의 유일한 그룹 메뉴 컨트롤러에 때문.

  6. 단추 마지막 단추 항목 다음 절을 추가 단추 각 메뉴 항목에 대 한 요소입니다.

    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem1" priority="0x0000" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 1</ButtonText>
        <CommandName>MC Item 1</CommandName>
      </Strings>
    </Button>
    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem2" priority="0x0100" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPic2" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 2</ButtonText>
        <CommandName>MC Item 2</CommandName>
      </Strings>
    </Button>
    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem3" priority="0x0200" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPicSearch" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 3</ButtonText>
        <CommandName>MC Item 3</CommandName>
      </Strings>
    </Button>
    
  7. 이제 메뉴 컨트롤러에서 찾을 수 있습니다.

    1. F5 키를 눌러는 실험의 인스턴스를 열려면 Visual Studio.

    2. 보기 메뉴를 가리키고 다른 창, 다음을 클릭 하 고 테스트 도구 창을.

    3. 도구 창에서 도구 모음에서 메뉴 컨트롤러를 나타납니다.

    4. 세 가지 가능한 명령을 보려면 메뉴 컨트롤러의 오른쪽에 있는 화살표를 클릭 합니다.

    명령을 클릭 하면 왼쪽 메뉴 컨트롤러에 있는 명령을 표시 하려면 변경 됩니다. 다음 섹션에서 우리가 이러한 명령을 활성화 하는 코드를 추가 합니다.

  8. 실험을 닫습니다 Visual Studio.

컨트롤러 메뉴 명령 구현

관리 되는 코드에서 메뉴 컨트롤러 명령 구현 하

  1. 솔루션 탐색기, PkgCmdID.cs 텍스트 편집기에서 열려면 두 번 클릭 합니다.

  2. PkgCmdIDList 클래스는 기존 명령 Id 후에 세 개의 메뉴 항목에 대 한 명령 Id를 추가 합니다.

    public const int cmdidMCItem1 = 0x130;
    public const int cmdidMCItem2 = 0x131;
    public const int cmdidMCItem3 = 0x132;
    
  3. 솔루션 탐색기에서 Twtoolbarpackage.cs를 엽니다.

  4. TWToolbarPackage 클래스의 상단에 다음을 추가 합니다.

    private int currentMCCommand; // The currently selected menu controller command
    
  5. "패키지 멤버" 라는 숨겨진된 영역을 찾아 왼쪽된 여백에 있는 더하기 기호를 클릭 하 여 확장 합니다.

  6. 에 Initialize 메서드가 마지막으로 호출 하면 즉시는 AddCommand 메서드를 라우팅할 동일한 처리기를 통해 각 명령에 대 한 이벤트 코드를 추가 합니다.

    for (int i = PkgCmdIDList.cmdidMCItem1; i <=
        PkgCmdIDList.cmdidMCItem3; i++)
    {
        CommandID cmdID = new
        CommandID(GuidList.guidTWToolbarCmdSet, i);
        OleMenuCommand mc = new OleMenuCommand(new
          EventHandler(OnMCItemClicked), cmdID);
        mc.BeforeQueryStatus += new EventHandler(OnMCItemQueryStatus);
        mcs.AddCommand(mc);
        // The first item is, by default, checked. 
        if (PkgCmdIDList.cmdidMCItem1 == i)
        {
            mc.Checked = true;
            this.currentMCCommand = i;
        }
    }
    
  7. 끝에는 TWToolbarPackage 클래스, 후 마우스 오른쪽 단추로 MenuItemCallback 메서드를 체크로 선택한 명령을 표시 하는 메서드를 추가 합니다.

    private void OnMCItemQueryStatus(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            mc.Checked = (mc.CommandID.ID == this.currentMCCommand);
        }
    }
    
  8. 뒤는 OnMCItemQueryStatus 메서드를 때 사용자 명령을 메뉴 컨트롤러 선택에 대 한 이벤트 처리기를 추가 합니다.

    private void OnMCItemClicked(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            string selection;
            switch (mc.CommandID.ID)
            {
                case PkgCmdIDList.cmdidMCItem1:
                    selection = "Menu controller Item 1";
                    break;
    
                case PkgCmdIDList.cmdidMCItem2:
                    selection = "Menu controller Item 2";
                    break;
    
                case PkgCmdIDList.cmdidMCItem3:
                    selection = "Menu controller Item 3";
                    break;
    
                default:
                    selection = "Unknown command";
                    break;
            }
            this.currentMCCommand = mc.CommandID.ID;
    
            IVsUIShell uiShell =
              (IVsUIShell)GetService(typeof(SVsUIShell));
            Guid clsid = Guid.Empty;
            int result;
            uiShell.ShowMessageBox(
                       0,
                       ref clsid,
                       "Test Tool Window Toolbar Package",
                       string.Format(CultureInfo.CurrentCulture,
                                     "You selected {0}", selection),
                       string.Empty,
                       0,
                       OLEMSGBUTTON.OLEMSGBUTTON_OK,
                       OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                       OLEMSGICON.OLEMSGICON_INFO,
                       0,
                       out result);
        }
    }
    
  9. 솔루션을 구축 하 고 발생 한 모든 오류를 수정 합니다.

메뉴 컨트롤러 테스트

메뉴 컨트롤러를 테스트 하려면

  1. 인스턴스는 실험을 열고 F5 키를 눌러 Visual Studio.

  2. 열려 있는 테스트 도구 창을.

    메뉴 컨트롤러 도구 창에서 도구 모음에 표시 하 고 "MC 품목 1"을 표시 합니다.

  3. 메뉴 컨트롤러 단추 옆의 화살표를 클릭 합니다.

    대화 상자가 표시 되 고 "선택 됨 메뉴 컨트롤러 항목 1" 메시지를 표시 합니다. 메시지 텍스트 메뉴 컨트롤러 단추에 해당 하는지 확인할 수 있습니다.

  4. 세 개 중 첫 번째 선택 하 고 아이콘 주위에 강조 상자가 있는 항목을 표시 하는 메뉴 컨트롤러에 있는 화살표를 클릭 합니다. 클릭 MC 항목 3.

    대화 상자가 표시 되 고 "선택 됨 메뉴 컨트롤러 항목 3" 메시지를 표시 합니다. 이제 메뉴 컨트롤러 단추 "MC Item 3"를 표시합니다.

  5. 메뉴 컨트롤러 옵션을 표시 하려면 화살표를 클릭 합니다. 새 열 새 기본 MC 항목 3, 지금을 선택 합니다.

참고 항목

작업

연습: 도구 창에는 도구 모음 추가

연습: IDE에 도구 모음 추가

기타 리소스

명령, 메뉴 및 도구 모음에 대 한 연습

명령, 메뉴 및 도구 모음