Condividi tramite


Popup contesto

Un popup di contesto è il controllo principale nella visualizzazione ContextPopup del framework della barra multifunzione di Windows. Si tratta di un sistema di menu di scelta rapida avanzato esposto solo dal framework come estensione a un'implementazione della barra multifunzione, il framework non espone il popup contesto come controllo indipendente.

Componenti del popup contesto

Il popup di contesto è un contenitore logico per il menu di scelta rapida e Mini-Toolbar sotto-controlli esposti rispettivamente tramite gli elementi di markup ContextMenu e MiniToolbar :

Ogni sotto-controllo può essere visualizzato al massimo una volta in un popup di contesto.

La schermata seguente illustra il popup di contesto e i relativi sotto-controlli costitutivi.

schermata con callout che mostra i componenti dell'interfaccia utente contestuale della barra multifunzione.

Il popup di contesto è puramente concettuale e non espone alcuna funzionalità dell'interfaccia utente, ad esempio posizionamento o ridimensionamento.

Nota

Il popup di contesto viene in genere visualizzato facendo clic con il pulsante destro del mouse (o tramite il tasto di scelta rapida MAIUSC+F10) su un oggetto di interesse. Tuttavia, i passaggi necessari per visualizzare il popup contesto sono definiti dall'applicazione.

 

Implementare il popup del contesto

In modo simile ad altri controlli del framework della barra multifunzione di Windows, il popup di contesto viene implementato tramite un componente di markup che specifica i dettagli della presentazione e un componente di codice che ne gestisce la funzionalità.

Nella tabella seguente sono elencati i controlli supportati da ogni sotto-controllo Popup contesto.

Control Mini-Toolbar Menu di scelta rapida
Button x x
Casella di controllo x x
ComboBox x
Pulsante a discesa x x
Selezione colori a discesa x x
Raccolta a discesa x x
Controllo carattere x
Pulsante Della Guida
Raccolta della barra multifunzione
Spinner
Pulsante Di divisione x x
Raccolta pulsanti di divisione x x
Interruttore x x

 

markup

Ogni sotto-controllo popup contesto deve essere dichiarato singolarmente nel markup.

Mini-Toolbar

Quando si aggiungono controlli a una mini-barra degli strumenti popup di contesto, è consigliabile considerare i due consigli seguenti:

  • I controlli devono essere altamente riconoscibili e fornire funzionalità ovvie. La familiarità è chiave, poiché le etichette e le descrizioni comandi non sono esposte per i controlli di Mini-Toolbar.
  • Ogni comando esposto da un controllo deve essere presentato altrove nell'interfaccia utente della barra multifunzione. L'Mini-Toolbar non supporta lo spostamento da tastiera.

Nell'esempio seguente viene illustrato il markup di base per un elemento MiniToolbar che contiene tre controlli Button .

Nota

Un elemento MenuGroup viene specificato per ogni riga di controlli nella mini-barra degli strumenti.

 

<MiniToolbar Name="MiniToolbar">
  <MenuGroup>
    <Button CommandName="cmdButton1" />
    <Button CommandName="cmdButton2" />
    <Button CommandName="cmdButton3" />
  </MenuGroup>
</MiniToolbar>

Menu di scelta rapida

Nell'esempio seguente viene illustrato il markup di base per un elemento ContextMenu che contiene tre controlli Button .

Nota

Ogni set di controlli nell'elemento MenuGroup è separato da una barra orizzontale nel menu di scelta rapida.

 

<ContextMenu Name="ContextMenu">
  <MenuGroup>
    <Button CommandName="cmdCut" />
    <Button CommandName="cmdCopy" />
    <Button CommandName="cmdPaste" />
  </MenuGroup>
</ContextMenu>

Anche se un popup di contesto può contenere al massimo uno di ogni sotto-controllo, sono valide più dichiarazioni di elemento ContextMenu e MiniToolbar nel markup della barra multifunzione. Ciò consente a un'applicazione di supportare varie combinazioni di controlli Menu di scelta rapida e Mini-Toolbar, in base ai criteri definiti dall'applicazione, ad esempio il contesto dell'area di lavoro.

Per altre informazioni, vedere l'elemento ContextMap .

Nell'esempio seguente viene illustrato il markup di base per l'elemento ContextPopup .

<ContextPopup>
  <ContextPopup.MiniToolbars>
    <MiniToolbar Name="MiniToolbar">
      <MenuGroup>
        <Button CommandName="cmdButton1" />
        <Button CommandName="cmdButton2" />
        <Button CommandName="cmdButton3" />
      </MenuGroup>
    </MiniToolbar>
  </ContextPopup.MiniToolbars>
  <ContextPopup.ContextMenus>
    <ContextMenu Name="ContextMenu">
      <MenuGroup>
        <Button CommandName="cmdCut" />
        <Button CommandName="cmdCopy" />
        <Button CommandName="cmdPaste" />
      </MenuGroup>
    </ContextMenu>
  </ContextPopup.ContextMenus>
  <ContextPopup.ContextMaps>
    <ContextMap CommandName="cmdContextMap" ContextMenu="ContextMenu" MiniToolbar="MiniToolbar"/>
  </ContextPopup.ContextMaps>
</ContextPopup>

Codice

Per richiamare un popup contesto, il metodo IUIContextualUI::ShowAtLocation viene chiamato quando la finestra di primo livello dell'applicazione barra multifunzione riceve una notifica di WM_CONTEXTMENU.

In questo esempio viene illustrato come gestire la notifica di WM_CONTEXTMENU nel metodo WndProc() dell'applicazione della barra multifunzione.

case WM_CONTEXTMENU:
  POINT pt;
  POINTSTOPOINT(pt, lParam);

  // ShowContextualUI method defined by the application.
  ShowContextualUI (pt, hWnd);
  break;

Nell'esempio seguente viene illustrato come un'applicazione della barra multifunzione può visualizzare il popup contesto in un percorso di schermata specifico usando il metodo IUIContextualUI::ShowAtLocation .

GetCurrentContext() ha un valore di come definito nell'esempio di cmdContextMap markup precedente.

g_pApplication è un riferimento all'interfaccia IUIFramework .

HRESULT ShowContextualUI(POINT& ptLocation, HWND hWnd)
{
  GetDisplayLocation(ptLocation, hWnd);

  HRESULT hr = E_FAIL;

  IUIContextualUI* pContextualUI = NULL;
 
  if (SUCCEEDED(g_pFramework->GetView(
                                g_pApplication->GetCurrentContext(), 
                                IID_PPV_ARGS(&pContextualUI))))
  {
    hr = pContextualUI->ShowAtLocation(ptLocation.x, ptLocation.y);
    pContextualUI->Release();
  }

  return hr;
}

Il riferimento a IUIContextualUI può essere rilasciato prima che il popup di contesto venga ignorato, come illustrato nell'esempio precedente. Tuttavia, il riferimento deve essere rilasciato a un certo punto per evitare perdite di memoria.

Attenzione

L'Mini-Toolbar ha un effetto di dissolvenza predefinito basato sulla prossimità del puntatore del mouse. Per questo motivo, è consigliabile visualizzare il Mini-Toolbar più vicino al puntatore del mouse il più possibile. In caso contrario, a causa dei meccanismi di visualizzazione in conflitto, il Mini-Toolbar potrebbe non essere eseguito come previsto.

 

Proprietà popup di contesto

Non sono presenti chiavi di proprietà associate al controllo Popup contesto.

Libreria di controllo di Windows Ribbon Framework

Esempio contextPopup