다음을 통해 공유


IUIFramework::GetView 메서드(uiribbon.h)

IUIRibbon 또는 IUIContextualUI와 같은 Windows 리본 프레임워크 뷰를 나타내는 인터페이스에 대한 포인터의 주소를 검색합니다.

구문

HRESULT GetView(
  [in]  UINT32 viewId,
  [in]  REFIID riid,
  [out] void   **ppv
);

매개 변수

[in] viewId

형식: UINT32

보기의 ID입니다. Ribbon 또는 ContextPopup의 Command.Id 값 0입니다.

[in] riid

형식: REFIID

IUIRibbon 또는 IUIContextualUI에 대한 인터페이스 ID입니다.

[out] ppv

형식: void**

이 메서드가 반환되면 IUIRibbon 또는 IUIContextualUI 개체에 대한 포인터의 주소가 포함됩니다.

반환 값

형식: HRESULT

성공하면 S_OK 반환합니다. 그렇지 않으면 다음 목록의 오류 값입니다.

설명
E_INVALIDARG riid 는 유효한 인터페이스 ID가 아닙니다.
E_FAIL 작업이 실패했습니다.

설명

리본 프레임워크 UI 기능은 기본적으로 리본ContextPopup과 같은 기본 제공 핵심 프레임워크인 뷰로 구분됩니다.

IUIFramework::GetView는 애플리케이션 수명 동안 인터페이스에 대한 포인터를 유지 관리하는 대신 호스트 애플리케이션이 임시 인터페이스 포인터를 만들고 필요에 따라 메서드를 호출할 수 있도록 합니다.

참고 호스트 애플리케이션은 메모리 누수 방지를 위해 임시 인터페이스 포인터에서 IUnknown::Release 를 호출해야 합니다.
 
예를 들어 리본의 크기가 변경 될 때마다 호스트 애플리케이션은 GetHeight 를 호출하여 호스트 클라이언트 영역의 크기를 적절하게 조정합니다.

예제

다음 예제에서는 IUIFramework::GetView 메서드를 사용하여 리본 뷰 개체를 검색하고, GetHeight 메서드를 호출하여 리본의 높이를 검색하고, 리본의 높이에 따라 컨텍스트 팝업 컨트롤의 표시 위치를 계산하는 방법을 보여 줍니다.

void GetDisplayLocation(POINT &pt, HWND hWnd)
{
  if (pt.x == -1 && pt.y == -1)
  {
    HRESULT hr = E_FAIL;

    // Display the menu in the upper-left corner of the client area, below the ribbon.
    IUIRibbon* pRibbon;
    hr = g_pFramework->GetView(0, IID_PPV_ARGS(&pRibbon));
    if (SUCCEEDED(hr))
    {
      UINT32 uRibbonHeight = 0;
      hr = pRibbon->GetHeight(&uRibbonHeight);
      if (SUCCEEDED(hr))
      {
        pt.x = 0;
        pt.y = uRibbonHeight;
        // Convert client coordinates of a specified point to screen coordinates.
        ClientToScreen(hWnd, &pt);
      }
      pRibbon->Release();
    }
    if (FAILED(hr))
    {
      // Default to just the upper-right corner of the entire screen.
      pt.x = 0;
      pt.y = 0;
    }
  }
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 uiribbon.h
DLL Mshtml.dll

추가 정보

IUIFramework

Windows 리본 프레임워크 샘플