Partager via


Fenêtre contextuelle contextuelle

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

Composants de la fenêtre contextuelle contextuelle

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

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

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

capture d’écran avec des 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, comme le positionnement ou le dimensionnement.

Notes

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 contextuelle sont définies par l’application.

 

Implémenter la fenêtre contextuelle contextuelle

De la même manière que les autres contrôles d’infrastructure du ruban Windows, la fenêtre contextuelle contextuelle est implémentée via 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.

Control Mini-Toolbar Menu contextuel
Button x x
Case à cocher x x
Déroulante x
Bouton déroulant x x
Sélecteur de couleurs de liste déroulante x x
Galerie déroulante x x
Contrôle des polices x
Bouton Aide
Galerie dans le ruban
Spinner
Bouton partagé x x
Galerie de boutons fractionnés x x
Bouton bascule x x

 

balisage

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

Mini-Toolbar

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

  • Les contrôles doivent être hautement reconnaissables et fournir des fonctionnalités évidentes. La familiarité 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 .

Notes

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 .

Notes

Chaque ensemble de contrôles de 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 de contexte puisse contenir au maximum un de chaque sous-contrôle, plusieurs déclarations d’éléments ContextMenu et MiniToolbar dans le balisage du ruban sont valides. Cela permet à une application de prendre en charge différentes combinaisons de menus contextuels et de contrôles Mini-Toolbar, en fonction de 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 Ribbon.

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 comme défini 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 ne soit ignorée, comme indiqué dans l’exemple précédent. Toutefois, la référence doit être publiée à un moment donné pour éviter les fuites de mémoire.

Attention

Le Mini-Toolbar a un effet de 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 que possible du pointeur de la souris. Sinon, en raison des mécanismes d’affichage en conflit, le Mini-Toolbar risque de ne pas s’afficher comme prévu.

 

Propriétés contextuelles

Aucune clé de propriété n’est associée au contrôle contextuel.

Bibliothèque de contrôle de l’infrastructure du ruban Windows

Exemple ContextPopup