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
Ajoutez un fichier .vsct à votre projet en suivant les étapes décrites dans How to : Create a .vsct file.
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">
Dans l’élément
CommandTable
, ajoutez unCommands
é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émentCommands
doit avoir sonPackage
attribut défini sur le nom du package.Après l’élément
Commands
, ajoutez unSymbols
é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
En haut de l’élément
CommandTable
, ajoutez unExtern
élément pour chaque fichier externe à référencer et définissez l’attributhref
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.
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émentCommands
. 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 etid
lesguid
attributs desUsedCommand
é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
Dans l’élément
Symbols
, ajoutez trois éléments GuidSymbol . ChaqueGuidSymbol
élément a unname
attribut et unvalue
attribut. Définissez l’attributname
pour qu’il reflète l’objectif de l’élément. L’attributvalue
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èmeGuidSymbol
élément représente le jeu de commandes et contient tous les symboles qui définissent vos menus, groupes et commandes. Le troisièmeGuidSymbol
é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èmeGuidSymbol
élément.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 lename
nom que vous utiliserez pour faire référence au menu, au groupe ou à la commande correspondant, puis définissez l’élémentvalue
sur un nombre hexadécimal qui représente son ID de commande. Aucun des deuxIDSymbol
éléments qui ont le même parent ne peut avoir la même valeur.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émentGuidSymbol
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 , Group
et 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
Si vous définissez de nouveaux menus, sous-menus, menus contextuels ou barres d’outils, ajoutez un
Menus
élément à l’élémentCommands
. Ensuite, pour que chaque menu soit créé, ajoutez un élément Menu à l’élémentMenus
.Définissez les attributs et les
guid
attributs de l’élémentMenu
, puis définissez l’attribut sur letype
type de menuid
souhaité. Vous pouvez également définir l’attributpriority
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.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 chaqueGroup
élément, puis définissez l’attributpriority
pour établir la position relative du groupe dans le menuid
parent. Pour plus d’informations, consultez Créer des groupes réutilisables de boutons.Si vous ajoutez de nouvelles commandes à l’IDE, ajoutez un
Buttons
élément à l’élémentCommands
. Ensuite, pour chaque commande, ajoutez un élément Button à l’élémentButtons
.Définissez les attributs et les
guid
attributs de chaqueButton
élément, puis définissez l’attribut sur letype
type de boutonid
souhaité. Vous pouvez également définir l’attributpriority
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.Dans l’élément
Button
, ajoutez un élément Strings qui contient un élément ButtonText et un élément CommandName . L’élémentButtonText
fournit l’étiquette de texte d’un élément de menu ou l’info-bulle d’un bouton de barre d’outils. L’élémentCommandName
fournit le nom de la commande à utiliser dans la commande.Si votre commande aura une icône, créez un élément Icon dans l’élément
Button
et définissez sesguid
attributs surid
l’élémentBitmap
pour l’icône.Remarque
Les boutons de barre d’outils doivent avoir des icônes.
Pour plus d’informations, consultez MenuCommands et OleMenuCommands.
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émentBitmaps
. 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
Pour les parents classiques, créez un
Parent
élément dans chaqueMenu
élément ,Group
etCommand
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.Définissez l’attribut
guid
sur le nom de l’élémentGuidSymbol
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.Définissez l’attribut pour qu’il
id
corresponde à l’attributid
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
Après l’élément
Commands
, ajoutez un élémentCommandPlacements
.Dans l’élément
CommandPlacements
, ajoutez unCommandPlacement
élément pour chaque menu, groupe ou commande à placer.Chaque
CommandPlacement
élément ouParent
é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 unCommandPlacement
élément pour chaque emplacement.Définissez les attributs et les
guid
attributs de chaqueCommandPlacement
élément sur le menu ou le groupe d’hébergement, comme vous le feriez pour unParent
id
élément. Vous pouvez également définir l’attributpriority
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
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é.
Après l’élément
Commands
, ajoutez un élémentVisibilityConstraints
.Pour chaque élément d’interface utilisateur à limiter, ajoutez un élément VisibilityItem .
Pour chaque
VisibilityItem
élément, définissez lesguid
attributs surid
le menu, le groupe ou la commande, puis définissez l’attributcontext
sur le contexte de l’interface utilisateur souhaité, comme défini dans la UIContextGuids80 classe.
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 .
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 .
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 .
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.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 .
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émentCombos
unCombo
élément pour chaque zone de liste modifiable à ajouter.Combo
les éléments ont les mêmes attributs et enfants queButton
les éléments et ontDefaultWidth
également etidCommandList
les attributs. L’attributDefaultWidth
définit la largeur en pixels, et l’attributidCommandList
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 sontype
attributMenuController
sur ouMenuControllerLatched
, selon le comportement souhaité. Pour remplir un contrôleur de menu, définissez-le comme parent d’unGroup
élément. Le contrôleur de menu affiche tous les enfants de ce groupe dans sa liste déroulante.