Share via


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 et id les guid attributs des UsedCommand éléments sur les valeurs GUID et ID des commandes à appeler.

    Pour plus d’informations sur la recherche des GUID et DES 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 prend un GUID. (Pour générer un GUID, sur 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 IDSymbol élément, définissez l’attribut sur le name nom que vous utiliserez pour faire référence au menu, au groupe ou à la commande correspondant, puis définissez l’élément value sur un nombre hexadécimal qui représente 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 Menuélément , Groupet Button chaque élément a un guid attribut et un id attribut. 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 et les guid attributs de l’élémentMenu, puis définissez l’attribut sur le type type de menu id souhaité. Vous pouvez également définir l’attribut priority pour établir la position relative du menu dans le groupe parent.

    Remarque

    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 et les guid attributs de chaque Group élément, puis définissez l’attribut priority pour établir la position relative du groupe dans le menu id 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 et les guid attributs de chaque Button élément, puis définissez l’attribut sur le type type de bouton id souhaité. Vous pouvez également définir l’attribut priority pour établir la position relative de la commande dans le groupe parent.

      Remarque

      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 la commande.

    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.

      Remarque

      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.

Pour compter sur le parentage pour placer des éléments d’interface utilisateur dans l’IDE

  1. Pour les parents classiques, créez un Parent élément dans chaque Menuélément , Groupet Command un élément 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 ou GUID visual Studio et des ID des barres d’outils 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 et les guid attributs de chaque CommandPlacement élément sur le menu ou le groupe d’hébergement, comme vous le feriez pour un Parentid élément. 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 jeux de commandes très volumineux, nous vous recommandons d’utiliser uniquement le placement 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 VisibilityItem élément, définissez les guid attributs sur id le menu, le groupe ou la commande, puis définissez l’attribut context sur le contexte de l’interface utilisateur souhaité, comme défini dans la UIContextGuids80 classe.

  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 de liste modifiable : une zone de liste déroulante est une liste déroulante qui peut être utilisée dans une barre d’outils. Pour ajouter des zones de liste modifiable à l’interface utilisateur, créez un élément Combos dans l’élément Commands . Ensuite, ajoutez à l’élément Combos un Combo élément pour chaque zone de liste modifiable à ajouter. Combo les éléments ont les mêmes attributs et enfants que Button les éléments et ont DefaultWidth également et idCommandList les attributs. 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 Menu élément et définissez son type attribut MenuController sur 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.