Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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émentCommandsdoit avoir sonPackageattribut 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’attributhrefsur 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 attributsguidetiddes élémentsUsedCommandavec 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
Dans l’élément
Symbols, ajoutez trois éléments GuidSymbol . ChaqueGuidSymbolélément a unnameattribut et unvalueattribut. Définissez l’attributnamepour qu’il reflète l’objectif de l’élément. L’attributvalueaccepte 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è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
GuidSymbolqui 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’attributnamesur le nom que vous utiliserez pour faire référence au menu, au groupe ou à la commande correspondant, puis définissez l’élémentvalueà un nombre hexadécimal qui représentera 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émentGuidSymbolqui 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
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
guidetidde l'élémentMenu, puis définissez l'attributtypesur le type de menu souhaité. Vous pouvez également définir l’attributprioritypour établir la position relative du menu dans le groupe parent.Note
L’attribut
priorityne 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
guidetidde chaque élémentGroup, puis définissez l’attributprioritypour établir la position relative du groupe dans le menu 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
guidetidde chaque élémentButton, puis définissez l’attributtypesur le type de bouton souhaité. Vous pouvez également définir l’attributprioritypour é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.Dans l’élément
Button, ajoutez un élément Strings qui contient un élément ButtonText et un élément CommandName . L’élémentButtonTextfournit l’étiquette de texte d’un élément de menu ou l’info-bulle d’un bouton de barre d’outils. L'élémentCommandNamefournit le nom de la commande à utiliser dans le répertoire de commandes.Si votre commande aura une icône, créez un élément Icon dans l’élément
Buttonet définissez sesguidattributs suridl’élémentBitmappour l’icône.Note
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.
S'appuyer sur la hiérarchie pour placer des éléments d'UI dans l'IDE
Pour une hiérarchisation typique, créez un élément
Parentdans chaque élémentMenu,Group, etCommanddéfini dans votre package.La cible de l’élément
Parentest le menu ou le groupe qui contiendra le menu, le groupe ou la commande.Définissez l’attribut
guidsur le nom de l’élémentGuidSymbolqui 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
idcorresponde à l’attributiddu 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
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
guidetidde chaque élémentCommandPlacementsur le menu ou le groupe d’hébergement, comme vous le feriez pour un élémentParent. Vous pouvez également définir l’attributprioritypour é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
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 élément
VisibilityItem, définissez les attributsguidetidsur le menu, le groupe ou la commande, puis définissez l’attributcontextsur le contexte de l’interface utilisateur souhaité, tel que défini dans la classe UIContextGuids80.
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 :
DefaultDisabledDefaultInvisibleDynamicItemStartDynamicVisibilityNoShowOnMenuControllerNotInTBList
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 :
AlwaysCreateCommandWellOnlyDefaultDockedDontCacheDynamicItemStartFixMenuControllerIconAndTextPictStretchHorizontallyTextMenuUseButtonTextChangesTextOnly
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 :
AllowParamsCaseSensitiveCommandWellOnlyFilterKeysNoAutoCompleteNoButtonCustomizeNoKeyCustomizeNoToolbarClosePostExecRouteToDocsTextIsAnchorCommand
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
ButtonTextdu 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
typesdescriptions 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émentCombosun élémentCombopour 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 DefaultWidthdéfinit la largeur en pixels, et l’attributidCommandListpointe 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
Menuet définissez son attributtypesurMenuControllerouMenuControllerLatched, 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.