IUIFramework::GetView 方法 (uiribbon.h)

检索指向表示 Windows 功能区框架视图的接口的指针的地址,例如 IUIRibbonIUIContextualUI

语法

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

参数

[in] viewId

类型: UINT32

视图的 ID。 对于功能区ContextPopup的 Command.Id,值为 0。

[in] riid

类型: REFIID

IUIRibbonIUIContextualUI 的接口 ID。

[out] ppv

类型: void**

此方法返回时,包含指向 IUIRibbonIUIContextualUI 对象的指针的地址。

返回值

类型: 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 功能区框架示例