Condividi tramite


Metodo IUIFramework::GetView (uiribbon.h)

Recupera l'indirizzo di un puntatore a un'interfaccia che rappresenta una visualizzazione del framework della barra multifunzione di Windows, ad esempio IUIRibbon o IUIContextualUI.

Sintassi

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

Parametri

[in] viewId

Tipo: UINT32

ID per la visualizzazione. Valore 0 per una barra multifunzioneo Command.Id di un contestoPopup.

[in] riid

Tipo: REFIID

ID dell'interfaccia per IUIRibbon o IUIContextualUI.

[out] ppv

Tipo: void**

Quando questo metodo restituisce, contiene l'indirizzo di un puntatore a un oggetto IUIRibbon o un oggetto IUIContextualUI .

Valore restituito

Tipo: HRESULT

Restituisce S_OK se ha esito positivo; in caso contrario, un valore di errore dall'elenco seguente.

Valore Descrizione
E_INVALIDARG riid non è un ID interfaccia valido.
E_FAIL Operazione non riuscita.

Commenti

La funzionalità dell'interfaccia utente del framework della barra multifunzione è differenziata da Views, che sono essenzialmente framework di base predefiniti, ad esempio la barra multifunzione e ContextPopup.

Anziché mantenere un puntatore a un'interfaccia durante tutta la durata di un'applicazione, IUIFramework::GetView consente a un'applicazione host di creare un puntatore di interfaccia temporaneo e chiamare i metodi in base alle esigenze.

Nota L'applicazione host deve chiamare IUnknown::Release nel puntatore dell'interfaccia temporanea per evitare una perdita di memoria.
 
Ad esempio, ogni volta che si verifica una modifica delle dimensioni della barra multifunzione, un'applicazione host chiama GetHeight per modificare le dimensioni dell'area client host in modo appropriato.

Esempio

Nell'esempio seguente viene illustrato come usare il metodo IUIFramework::GetView per recuperare un oggetto View della barra multifunzione, chiamare il metodo GetHeight per recuperare l'altezza della barra multifunzione e calcolare una posizione di visualizzazione per un controllo Popup contesto in base all'altezza della barra multifunzione.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione uiribbon.h
DLL Mshtml.dll

Vedi anche

IUIFramework

Esempi di Framework della barra multifunzione di Windows