다음을 통해 공유


방법: 사용자 인터페이스 업데이트

명령 처리 체계를 Vspackage를 구현한 후에 UI (사용자 인터페이스)를 업데이트 하는 코드 상태와 새 명령을 추가할 수 있습니다.

일반적인 Win32 응용 프로그램, 명령 집합을 지속적으로 폴링할 수 있습니다 및 사용자가 볼 때 개별 명령 상태를 조정할 수 있습니다. 그러나 때문에 Visual Studio 셸 Vspackages의 무제한 호스트 수 있습니다, 광범위 한 폴링 interop 어셈블리 COM과 관리 되는 코드 사이 특히 폴링 응답 속도 줄일 수 있습니다

UI를 업데이트.

  • 다음 단계 중 하나를 수행합니다.

    • UpdateCommandUI 메서드를 호출합니다.

      IVsUIShell 인터페이스에서 얻을 수 있습니다의 SVsUIShell 서비스는 다음과 같이 합니다.

      Private Sub UpdateUI(ByVal sp As Microsoft.VisualStudio.Shell.ServiceProvider)
          Dim vsShell As IVsUIShell = DirectCast(sp.GetService(GetType(IVsUIShell)), IVsUIShell)
          If vsShell IsNot Nothing Then 
              Dim hr As Integer = vsShell.UpdateCommandUI(0)
              Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr)
          End If 
      End Sub
      
      void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp)
      {
          IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell));
          if (vsShell != null)
          {
              int hr = vsShell.UpdateCommandUI(0);
              Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr);
          }
      }
      
      void UpdateUI(IServiceProvider *pSP)
      {
          CComPtr< IVsUIShell> srpShell;
          int hresult = pSP->QueryService(SID_SVsUIShell, 
                                          IID_IVsUIShell, 
                                          (void **)&srpShell);
          if (SUCCEEDED(hresult) && NULL != srpShell)
          {
              sprShell->UpdateCommandUI(FALSE);
          }
      }
      

      경우에서 매개 변수는 UpdateCommandUI 0이 (TRUE), 동기적으로 하 고 즉시 업데이트를 수행 합니다. 0을 전달 하는 것이 좋습니다 (FALSE)의 좋은 성능을 유지 하기 위해이 매개 변수입니다. 캐싱이 발생 하지 않도록 하려면 적용 있는 DontCache 명령은.vsct 파일을 만들 때 플래그를 지정 합니다. 그럼에도 불구 하 고 플래그를 사용할 때 주의 하거나 성능이 저하 될 수 있습니다. 명령 플래그에 대 한 자세한 내용은 참조 하십시오 있는 명령 플래그 요소 설명서입니다.

    • 창에는 현재 위치에서 활성화 모델을 사용 하 여 ActiveX 컨트롤을 호스팅할 Vspackages에 사용 하는 것이 더 편리할 수 있습니다의 UpdateUI 메서드가 있습니다. UpdateCommandUI 메서드에서 IVsUIShell 인터페이스 하는 UpdateUI 메서드에서 IOleInPlaceComponentUIManager 인터페이스는 기능적으로 동일한. 둘 다의 모든 명령 상태를 다시 쿼리하려면 환경 발생할. 일반적으로 업데이트가 즉시 수행 됩니다. 대신, 업데이트 유휴 시간 때까지 지연 됩니다. 셸 명령 상태 좋은 성능을 유지 하기 위해 캐시 됩니다. 캐싱이 발생 하지 않도록 하려면 적용 있는 DontCache 명령은.vsct 파일을 만들 때 플래그를 지정 합니다. 그럼에도 불구 하 고 성능이 저하 될 수 있습니다 때문에 플래그가 주의 사용 합니다.

      얻을 수 있습니다의 IOleInPlaceComponentUIManager 인터페이스를 호출 하 여는 QueryInterface 방법에는 IOleComponentUIManager object 또는 인터페이스에서를 얻기는 SOleComponentUIManager 서비스.

참고 항목

개념

Vspackages에 IDE 사용자 인터페이스 요소를 추가 하는 방법

명령 구현