Partager via


Fenêtre contextuelle contextuelle

Une fenêtre contextuelle contextuelle est le contrôle principal dans l'vue ContextPopup de l’infrastructure du ruban Windows. Il s’agit d’un système de menu contextuel riche qui n’est exposé que par l’infrastructure en tant qu’extension à une implémentation du ruban , l’infrastructure n’expose pas la fenêtre contextuelle contextuelle en tant que contrôle indépendant.

Composants de la fenêtre contextuelle de contexte

La fenêtre contextuelle contextuelle est un conteneur logique pour le menu contextuel et Mini-Toolbar sous-contrôles exposés via les ContextMenu et MiniToolbar éléments de balisage, respectivement :

  • Le ContextMenu expose un menu de commandes et de galeries.
  • La MiniToolbar expose une barre d’outils flottante de diverses commandes, galeries et contrôles complexes tels que le contrôle de police et la zone de liste déroulante .

Chaque sous-contrôle peut apparaître au plus une fois dans une fenêtre contextuelle contextuelle.

La capture d’écran suivante illustre la fenêtre contextuelle contextuelle et ses sous-contrôles constituants.

capture d’écran avec légendes montrant les composants contextuels de l’interface utilisateur du ruban.

La fenêtre contextuelle contextuelle est purement conceptuelle et n’expose aucune fonctionnalité d’interface utilisateur elle-même, telle que le positionnement ou le dimensionnement.

Note

La fenêtre contextuelle contextuelle s’affiche généralement en cliquant avec le bouton droit sur la souris (ou via le raccourci clavier Maj+F10) sur un objet d’intérêt. Toutefois, les étapes requises pour afficher la fenêtre contextuelle de contexte sont définies par l’application.

 

Implémenter la fenêtre contextuelle contextuelle

De la même manière que d’autres contrôles d’infrastructure du ruban Windows, la fenêtre contextuelle contextuelle est implémentée par le biais d’un composant de balisage qui spécifie ses détails de présentation et un composant de code qui régit ses fonctionnalités.

Le tableau suivant répertorie les contrôles pris en charge par chaque sous-contrôle contextuel contextuel.

Contrôle Mini-Toolbar Menu contextuel
bouton x x
case à cocher x x
zone de liste déroulante x
Drop-Down bouton x x
Drop-Down sélecteur de couleurs x x
Drop-Down Galerie x x
de contrôle de police x
bouton d’aide
In-Ribbon Galerie
spinner
bouton fractionné x x
galerie de boutons fractionnés x x
bouton bascule x x

 

Balisage

Chaque sous-contrôle contextuel contextuel doit être déclaré individuellement dans le balisage.

Mini-Toolbar

Lors de l’ajout de contrôles à une mini-barre d’outils contextuelle contextuelle, les deux recommandations suivantes doivent être prises en compte :

  • Les contrôles doivent être très reconnaissables et fournir des fonctionnalités évidentes. La connaissance est essentielle, car les étiquettes et les info-bulles ne sont pas exposées pour les contrôles Mini-Toolbar.
  • Chaque commande exposée par un contrôle doit être présentée ailleurs dans l’interface utilisateur du ruban. Le Mini-Toolbar ne prend pas en charge la navigation au clavier.

L’exemple suivant illustre le balisage de base d’un élément MiniToolbar qui contient trois contrôles Button.

Note

Un élément MenuGroup est spécifié pour chaque ligne de contrôles dans la mini-barre d’outils.

 

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

Menu contextuel

L’exemple suivant illustre le balisage de base d’un élément ContextMenu qui contient trois contrôles Button.

Note

Chaque ensemble de contrôles dans l’élément MenuGroup est séparé par une barre horizontale dans le menu contextuel.

 

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

Bien qu’une fenêtre contextuelle contextuelle puisse contenir au maximum l’un de chaque sous-contrôle, plusieurs ContextMenu et MiniToolbar déclarations d’éléments dans le balisage du ruban sont valides. Cela permet à une application de prendre en charge différentes combinaisons de contrôles de menu contextuel et de Mini-Toolbar, en fonction des critères définis par l’application, tels que le contexte de l’espace de travail.

Pour plus d’informations, consultez l’élément ContextMap.

L’exemple suivant illustre le balisage de base de l’élément 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>

Code

Pour appeler une fenêtre contextuelle contextuelle, la méthode IUIContextualUI ::ShowAtLocation est appelée lorsque la fenêtre de niveau supérieur de l’application ruban reçoit une notification WM_CONTEXTMENU.

Cet exemple montre comment gérer la notification WM_CONTEXTMENU dans la méthode WndProc() de l’application ruban.

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

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

L’exemple suivant montre comment une application ruban peut afficher la fenêtre contextuelle contextuelle à un emplacement d’écran spécifique à l’aide de la méthode IUIContextualUI ::ShowAtLocation.

GetCurrentContext() a une valeur de cmdContextMap telle que définie dans l’exemple de balisage précédent.

g_pApplication est une référence à l’interface 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;
}

La référence à IUIContextualUI peut être publiée avant que la fenêtre contextuelle contextuelle soit ignorée, comme illustré dans l’exemple précédent. Toutefois, la référence doit être libérée à un moment donné pour éviter les fuites de mémoire.

Prudence

Le Mini-Toolbar a un effet fondu intégré basé sur la proximité du pointeur de la souris. Pour cette raison, il est recommandé d’afficher le Mini-Toolbar aussi près du pointeur de la souris que possible. Sinon, en raison des mécanismes d’affichage en conflit, le Mini-Toolbar peut ne pas s’afficher comme prévu.

 

Propriétés contextuelles de contexte

Il n’existe aucune clé de propriété associée au contrôle contextuel contextuel.

bibliothèque de contrôle d’infrastructure du ruban Windows

Exemple ContextPopup