IUIFramework::GetView 方法 (uiribbon.h)
检索指向表示 Windows 功能区框架视图的接口的指针的地址,例如 IUIRibbon 或 IUIContextualUI。
语法
HRESULT GetView(
[in] UINT32 viewId,
[in] REFIID riid,
[out] void **ppv
);
参数
[in] viewId
类型: UINT32
视图的 ID。 对于功能区或 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 ,以避免内存泄漏。
示例
以下示例演示如何使用 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 |