Créer des fichiers .vsct

Ce document montre comment créer un fichier .vsct pour ajouter des éléments de menu, des barres d’outils et d’autres éléments d’interface utilisateur à l’environnement de développement intégré (IDE) visual Studio. Utilisez ces étapes lorsque vous ajoutez des éléments d’interface utilisateur à un package Visual Studio (VSPackage) qui n’a pas déjà de fichier .vsct .

Pour les nouveaux projets, nous vous recommandons d’utiliser le modèle de package Visual Studio, car il génère un fichier .vsct qui, selon vos sélections, a déjà les éléments requis pour une commande de menu, une fenêtre d’outil ou un éditeur personnalisé. Vous pouvez modifier ce fichier .vsct pour répondre aux exigences de votre VSPackage. Pour plus d’informations sur la modification d’un fichier .vsct , consultez les exemples dans Étendre les menus et les commandes.

Créer le fichier

Créez un fichier .vsct dans ces phases : créez la structure des fichiers et des ressources, déclarez les éléments d’interface utilisateur, placez les éléments d’interface utilisateur dans l’IDE et ajoutez tous les comportements spécialisés.

Structure de fichiers

La structure de base d’un fichier .vsct est un élément racine CommandTable qui contient un élément Commands et un élément Symbols .

Pour créer la structure de fichiers

  1. Ajoutez un fichier .vsct à votre projet en suivant les étapes décrites dans How to : Create a .vsct file.

  2. Ajoutez les espaces de noms requis à l’élément CommandTable , comme illustré dans l’exemple suivant :

    <CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable"
        xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
    
  3. Dans l’élément CommandTable , ajoutez un Commands élément pour héberger tous vos menus, barres d’outils, groupes de commandes et commandes personnalisés. Afin que vos éléments d’interface utilisateur personnalisés puissent être chargés, l’élément Commands doit avoir son Package attribut défini sur le nom du package.

    Après l’élément Commands , ajoutez un Symbols élément pour définir les GUID du package, ainsi que les noms et les ID de commande de vos éléments d’interface utilisateur.

Inclure des ressources Visual Studio

Utilisez l’élément Extern pour accéder aux fichiers qui définissent les commandes Visual Studio et les menus requis pour placer vos éléments d’interface utilisateur dans l’IDE. Si vous utiliserez des commandes définies en dehors de votre package, utilisez l’élément UsedCommands pour informer Visual Studio.

Pour inclure des ressources Visual Studio

  1. En haut de l’élément CommandTable , ajoutez un Extern élément pour chaque fichier externe à référencer et définissez l’attribut href sur le nom du fichier. Vous pouvez référencer les fichiers d’en-tête suivants pour accéder aux ressources Visual Studio :

    • Stdidcmd.h : définit des ID pour toutes les commandes exposées par Visual Studio.

    • Vsshlids.h : contient des ID de commande pour les menus Visual Studio.

  2. Si votre package appelle des commandes définies par Visual Studio ou par d’autres packages, ajoutez un UsedCommands élément après l’élément Commands . Remplissez cet élément avec un élément UsedCommand pour chaque commande que vous appelez qui ne fait pas partie de votre package. Définissez les attributs guid et id des éléments UsedCommand avec les valeurs de GUID et ID des commandes à appeler.

    Pour plus d'informations sur la façon de trouver les GUID et les ID des commandes Visual Studio, consultez GUID et ID des commandes Visual Studio. Pour appeler des commandes à partir d’autres packages, utilisez le GUID et l’ID de la commande comme défini dans le fichier .vsct pour ces packages.

Déclarer des éléments d’interface utilisateur

Déclarez tous les nouveaux éléments d’interface utilisateur dans la Symbols section du fichier .vsct .

Pour déclarer des éléments d’interface utilisateur

  1. Dans l’élément Symbols , ajoutez trois éléments GuidSymbol . Chaque GuidSymbol élément a un name attribut et un value attribut. Définissez l’attribut name pour qu’il reflète l’objectif de l’élément. L’attribut value accepte un GUID. (Pour générer un GUID, dans le menu Outils , sélectionnez Créer un GUID, puis sélectionnez Format du Registre.)

    Le premier GuidSymbol élément représente votre package et n’a généralement pas d’enfants. Le deuxième GuidSymbol élément représente le jeu de commandes et contient tous les symboles qui définissent vos menus, groupes et commandes. Le troisième GuidSymbol élément représente votre magasin d’images et contient des symboles pour toutes les icônes de vos commandes. Si vous n’avez aucune commande qui utilise des icônes, vous pouvez omettre le troisième GuidSymbol élément.

  2. Dans l’élément GuidSymbol qui représente votre jeu de commandes, ajoutez un ou plusieurs éléments IDSymbol . Chacun d’eux représente un menu, une barre d’outils, un groupe ou une commande que vous ajoutez à l’interface utilisateur.

    Pour chaque élément IDSymbol, définissez l’attribut name sur le nom que vous utiliserez pour faire référence au menu, au groupe ou à la commande correspondant, puis définissez l’élément value à un nombre hexadécimal qui représentera son ID de commande. Aucun des deux IDSymbol éléments qui ont le même parent ne peut avoir la même valeur.

  3. Si l’un de vos éléments d’interface utilisateur nécessite des icônes, ajoutez un IDSymbol élément pour chaque icône à l’élément GuidSymbol qui représente votre magasin d’images.

Placer des éléments d’interface utilisateur dans l’IDE

Les éléments Menus, Groupes et Boutons contiennent les définitions de tous les menus, groupes et commandes définis dans votre package. Placez ces menus, groupes et commandes dans l’IDE à l’aide d’un élément Parent , qui fait partie de la définition de l’élément d’interface utilisateur ou à l’aide d’un élément CommandPlacement défini ailleurs.

Chaque élément Menu, Group et Button a un attribut guid et un attribut id. Définissez toujours l’attribut guid pour qu’il corresponde au nom de l’élément GuidSymbol qui représente votre jeu de commandes, puis définissez l’attribut sur le id nom de l’élément IDSymbol qui représente votre menu, groupe ou commande dans la Symbols section.

Pour définir des éléments d’interface utilisateur

  1. Si vous définissez de nouveaux menus, sous-menus, menus contextuels ou barres d’outils, ajoutez un Menus élément à l’élément Commands . Ensuite, pour que chaque menu soit créé, ajoutez un élément Menu à l’élément Menus .

    Définissez les attributs guid et id de l'élément Menu, puis définissez l'attribut type sur le type de menu souhaité. Vous pouvez également définir l’attribut priority pour établir la position relative du menu dans le groupe parent.

    Note

    L’attribut priority ne s’applique pas aux barres d’outils et aux menus contextuels.

  2. Toutes les commandes de l’IDE Visual Studio doivent être hébergées par des groupes de commandes, qui sont les enfants directs des menus et des barres d’outils. Si vous ajoutez de nouveaux menus ou barres d’outils à l’IDE, ceux-ci doivent contenir de nouveaux groupes de commandes. Vous pouvez également ajouter des groupes de commandes aux menus et barres d’outils existants afin de pouvoir regrouper visuellement vos commandes.

    Lorsque vous ajoutez de nouveaux groupes de commandes, vous devez d’abord créer un Groups élément, puis l’ajouter à un élément Group pour chaque groupe de commandes.

    Définissez les attributs guid et id de chaque élément Group, puis définissez l’attribut priority pour établir la position relative du groupe dans le menu parent. Pour plus d’informations, consultez Créer des groupes réutilisables de boutons.

  3. Si vous ajoutez de nouvelles commandes à l’IDE, ajoutez un Buttons élément à l’élément Commands . Ensuite, pour chaque commande, ajoutez un élément Button à l’élément Buttons .

    1. Définissez les attributs guid et id de chaque élément Button, puis définissez l’attribut type sur le type de bouton souhaité. Vous pouvez également définir l’attribut priority pour établir la position relative de la commande dans le groupe parent.

      Note

      Utiliser type="button" pour les commandes et boutons de menu standard dans les barres d’outils.

    2. Dans l’élément Button , ajoutez un élément Strings qui contient un élément ButtonText et un élément CommandName . L’élément ButtonText fournit l’étiquette de texte d’un élément de menu ou l’info-bulle d’un bouton de barre d’outils. L'élément CommandName fournit le nom de la commande à utiliser dans le répertoire de commandes.

    3. Si votre commande aura une icône, créez un élément Icon dans l’élément Button et définissez ses guid attributs sur id l’élément Bitmap pour l’icône.

      Note

      Les boutons de barre d’outils doivent avoir des icônes.

    Pour plus d’informations, consultez MenuCommands et OleMenuCommands.

  4. Si l’une de vos commandes nécessite des icônes, ajoutez un élément Bitmaps à l’élément Commands . Ensuite, pour chaque icône, ajoutez un élément Bitmap à l’élément Bitmaps . C’est là que vous spécifiez l’emplacement de la ressource bitmap. Pour plus d’informations, consultez Ajouter des icônes aux commandes de menu.

    Vous pouvez vous appuyer sur la structure parente pour placer correctement la plupart des menus, groupes et commandes. Pour les ensembles de commandes très volumineux, ou lorsqu’un menu, un groupe ou une commande doit apparaître à plusieurs emplacements, nous vous recommandons de spécifier le positionnement des commandes.

S'appuyer sur la hiérarchie pour placer des éléments d'UI dans l'IDE

  1. Pour une hiérarchisation typique, créez un élément Parent dans chaque élément Menu, Group, et Command défini dans votre package.

    La cible de l’élément Parent est le menu ou le groupe qui contiendra le menu, le groupe ou la commande.

    1. Définissez l’attribut guid sur le nom de l’élément GuidSymbol qui définit le jeu de commandes. Si l’élément cible ne fait pas partie de votre package, utilisez le guid de ce jeu de commandes, tel que défini dans le fichier .vsct correspondant.

    2. Définissez l’attribut pour qu’il id corresponde à l’attribut id du menu ou du groupe cible. Pour obtenir la liste des menus et des groupes exposés par Visual Studio, consultez les GUID et les ID des menus de Visual Studio ou les GUID et les ID des barres d’outils de Visual Studio.

    Si vous avez un grand nombre d’éléments d’interface utilisateur à placer dans l’IDE ou si vous avez des éléments qui doivent apparaître à plusieurs emplacements, définissez leurs placements dans l’élément CommandPlacements , comme indiqué dans les étapes suivantes.

Pour utiliser l’emplacement des commandes pour placer des éléments d’interface utilisateur dans l’IDE

  1. Après l’élément Commands, ajoutez un élément CommandPlacements.

  2. Dans l’élément CommandPlacements , ajoutez un CommandPlacement élément pour chaque menu, groupe ou commande à placer.

    Chaque CommandPlacement élément ou Parent élément place un menu, un groupe ou une commande dans un emplacement IDE. Un élément d’interface utilisateur ne peut avoir qu’un seul parent, mais il peut avoir plusieurs placements de commandes. Pour placer un élément d’interface utilisateur dans plusieurs emplacements, ajoutez un CommandPlacement élément pour chaque emplacement.

  3. Définissez les attributs guid et id de chaque élément CommandPlacement sur le menu ou le groupe d’hébergement, comme vous le feriez pour un élément Parent. Vous pouvez également définir l’attribut priority pour établir la position relative de l’élément d’interface utilisateur.

    Vous pouvez combiner le placement en fonction du parentage et du placement de commandes. Toutefois, pour les ensembles de commandes très volumineux, nous vous recommandons d’utiliser uniquement le positionnement des commandes.

Ajouter des comportements spécialisés

Vous pouvez utiliser l’élément CommandFlag pour modifier le comportement des menus et des commandes, par exemple, pour modifier leur apparence et leur visibilité. Vous pouvez également affecter lorsqu’une commande est visible à l’aide de l’élément VisibilityConstraints ou ajouter des raccourcis clavier à l’aide de l’élément KeyBindings . Certains types de menus et de commandes ont déjà des comportements spécialisés intégrés.

Pour ajouter des comportements spécialisés

  1. Pour rendre un élément d’interface utilisateur visible uniquement dans certains contextes d’interface utilisateur, par exemple, lorsqu’une solution est chargée, utilisez des contraintes de visibilité.

    1. Après l’élément Commands, ajoutez un élément VisibilityConstraints.

    2. Pour chaque élément d’interface utilisateur à limiter, ajoutez un élément VisibilityItem .

    3. Pour chaque élément VisibilityItem, définissez les attributs guid et id sur le menu, le groupe ou la commande, puis définissez l’attribut context sur le contexte de l’interface utilisateur souhaité, tel que défini dans la classe UIContextGuids80.

  2. Pour définir la visibilité ou la disponibilité d’un élément d’interface utilisateur dans le code, utilisez un ou plusieurs des indicateurs de commande suivants :

    • DefaultDisabled

    • DefaultInvisible

    • DynamicItemStart

    • DynamicVisibility

    • NoShowOnMenuController

    • NotInTBList

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

  3. Pour modifier l’apparence d’un élément ou modifier son apparence dynamiquement, utilisez un ou plusieurs des indicateurs de commande suivants :

    • AlwaysCreate

    • CommandWellOnly

    • DefaultDocked

    • DontCache

    • DynamicItemStart

    • FixMenuController

    • IconAndText

    • Pict

    • StretchHorizontally

    • TextMenuUseButton

    • TextChanges

    • TextOnly

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

  4. Pour modifier la façon dont un élément réagit lorsqu’il reçoit des commandes, utilisez un ou plusieurs des indicateurs de commande suivants :

    • AllowParams

    • CaseSensitive

    • CommandWellOnly

    • FilterKeys

    • NoAutoComplete

    • NoButtonCustomize

    • NoKeyCustomize

    • NoToolbarClose

    • PostExec

    • RouteToDocs

    • TextIsAnchorCommand

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

  5. Pour attacher un raccourci clavier dépendant du menu à un menu ou à un élément d’un menu, ajoutez un caractère d’ampersand (&) dans l’élément ButtonText du menu ou de l’élément de menu. Le caractère qui suit l’ampersand est le raccourci clavier actif lorsque le menu parent est ouvert.

  6. Pour attacher un raccourci clavier indépendant du menu à une commande, utilisez l’élément KeyBindings . Pour plus d’informations, consultez l’élément KeyBinding .

  7. Pour localiser le texte du menu, utilisez l’élément LocCanonicalName . Pour plus d’informations, consultez l’élément Strings .

    Certains types de menus et de boutons incluent des comportements spécialisés. La liste suivante décrit certains types de menus et de boutons spécialisés. Pour d’autres types, consultez les types descriptions d’attributs dans les éléments Menu, Button et Combo .

    • Zone combinée : une zone combinée est une liste déroulante pouvant être utilisée dans une barre d’outils. Pour ajouter des zones de liste déroulante à l’interface utilisateur, créez un élément Combos dans l’élément Commands. Ensuite, ajoutez à l’élément Combos un élément Combo pour chaque zone de liste modifiable à ajouter. éléments ont les mêmes attributs et enfants que éléments et ont également des attributs et . L’attribut DefaultWidth définit la largeur en pixels, et l’attribut idCommandList pointe vers un ID de commande utilisé pour remplir la zone de liste déroulante.

    • Contrôleur de menu : un contrôleur de menu est un bouton qui a une flèche en regard de celle-ci. Cliquez sur la flèche pour ouvrir une liste. Pour ajouter un contrôleur de menu à l’interface utilisateur, créez un élément Menu et définissez son attribut type sur MenuController ou MenuControllerLatched, selon le comportement souhaité. Pour remplir un contrôleur de menu, définissez-le comme parent d’un Group élément. Le contrôleur de menu affiche tous les enfants de ce groupe dans sa liste déroulante.