Compartir a través de


Método IUIFramework::GetView (uiribbon.h)

Recupera la dirección de un puntero a una interfaz que representa una vista del marco de la cinta de Windows, como IUIRibbon o IUIContextualUI.

Sintaxis

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

Parámetros

[in] viewId

Tipo: UINT32

Identificador de la vista. Un valor de 0 para una cinta de opciones o el Command.Id de contextPopup.

[in] riid

Tipo: REFIID

Identificador de interfaz de IUIRibbon o IUIContextualUI.

[out] ppv

Tipo: void**

Cuando este método devuelve, contiene la dirección de un puntero a un IUIRibbon o un objeto IUIContextualUI .

Valor devuelto

Tipo: HRESULT

Devuelve S_OK si se ejecuta correctamente; de lo contrario, un valor de error de la lista siguiente.

Valor Descripción
E_INVALIDARG riid no es un identificador de interfaz válido.
E_FAIL Error en la operación.

Comentarios

La funcionalidad de la interfaz de usuario del marco de la cinta de opciones se diferencia por Las vistas, que son básicamente marcos principales integrados, como la cinta de opciones y ContextPopup.

En lugar de mantener un puntero a una interfaz durante toda la vida de una aplicación, IUIFramework::GetView permite a una aplicación host crear un puntero de interfaz temporal y llamar a métodos según sea necesario.

Nota La aplicación host debe llamar a IUnknown::Release en el puntero de interfaz temporal para evitar una pérdida de memoria.
 
Por ejemplo, cada vez que hay un cambio en el tamaño de la cinta de opciones, una aplicación host llama a GetHeight para ajustar el tamaño del área de cliente host correctamente.

Ejemplos

En el ejemplo siguiente se muestra cómo usar el método IUIFramework::GetView para recuperar un objeto Vista de la cinta de opciones, llamar al método GetHeight para recuperar el alto de la cinta de opciones y calcular una ubicación para mostrar para un control Emergente de contexto basado en el alto de la cinta de opciones.

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;
    }
  }
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado uiribbon.h
Archivo DLL Mshtml.dll

Consulte también

IUIFramework

Ejemplos de Windows Ribbon Framework