Tworzenie plików vsct
W tym dokumencie pokazano, jak utworzyć plik vsct, aby dodać elementy menu, paski narzędzi i inne elementy interfejsu użytkownika do zintegrowanego środowiska projektowego (IDE) programu Visual Studio. Te kroki należy wykonać podczas dodawania elementów interfejsu użytkownika do pakietu programu Visual Studio (VSPackage), który nie ma jeszcze pliku vsct .
W przypadku nowych projektów zalecamy użycie szablonu pakietu programu Visual Studio, ponieważ generuje on plik vsct , który w zależności od wybranych opcji zawiera już wymagane elementy polecenia menu, okna narzędzi lub edytora niestandardowego. Możesz zmodyfikować ten plik vsct , aby spełnić wymagania pakietu VSPackage. Aby uzyskać więcej informacji na temat modyfikowania pliku vsct , zobacz przykłady w temacie Rozszerzanie menu i poleceń.
Tworzenie pliku
Utwórz plik vsct w tych fazach: utwórz strukturę plików i zasobów, zadeklaruj elementy interfejsu użytkownika, umieść elementy interfejsu użytkownika w środowisku IDE i dodaj wszelkie wyspecjalizowane zachowania.
Struktura plików
Podstawową strukturą pliku vsct jest element główny CommandTable zawierający element Commands i element Symbols .
Aby utworzyć strukturę plików
Dodaj plik vsct do projektu, wykonując kroki opisane w temacie Instrukcje: tworzenie pliku vsct.
Dodaj wymagane przestrzenie nazw do
CommandTable
elementu, jak pokazano w poniższym przykładzie:<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
W elemmencie
CommandTable
dodajCommands
element do hostowania wszystkich niestandardowych menu, pasków narzędzi, grup poleceń i poleceń. Aby elementy niestandardowego interfejsu użytkownika mogły być ładowane,Commands
element musi mieć jegoPackage
atrybut ustawiony na nazwę pakietu.Po elemecie
Commands
dodajSymbols
element w celu zdefiniowania identyfikatorów GUID pakietu oraz nazw i identyfikatorów poleceń dla elementów interfejsu użytkownika.
Dołączanie zasobów programu Visual Studio
Użyj elementu Extern , aby uzyskać dostęp do plików definiujących polecenia programu Visual Studio i menu, które są wymagane do umieszczania elementów interfejsu użytkownika w środowisku IDE. Jeśli użyjesz poleceń zdefiniowanych poza pakietem, użyj elementu UsedCommands , aby poinformować program Visual Studio.
Aby uwzględnić zasoby programu Visual Studio
W górnej
CommandTable
części elementu dodaj jedenExtern
element dla każdego pliku zewnętrznego do przywołowania i ustawhref
atrybut na nazwę pliku. Aby uzyskać dostęp do zasobów programu Visual Studio, możesz odwołać się do następujących plików nagłówków:Stdidcmd.h: definiuje identyfikatory dla wszystkich poleceń udostępnianych przez program Visual Studio.
Vsshlids.h: zawiera identyfikatory poleceń dla menu programu Visual Studio.
Jeśli pakiet wywołuje polecenia zdefiniowane przez program Visual Studio lub inne pakiety, dodaj
UsedCommands
element po elemecieCommands
. Wypełnij ten element za pomocą elementu UsedCommand dla każdego wywoływanego polecenia, które nie jest częścią pakietu.guid
Ustaw atrybutyUsedCommand
iid
elementów na identyfikator GUID i identyfikator wartości poleceń do wywołania.Aby uzyskać więcej informacji na temat znajdowania identyfikatorów GUID i identyfikatorów poleceń programu Visual Studio, zobacz Identyfikatory GUID i identyfikatory poleceń programu Visual Studio. Aby wywołać polecenia z innych pakietów, użyj identyfikatora GUID i identyfikatora polecenia zgodnie z definicją w pliku vsct dla tych pakietów.
Deklarowanie elementów interfejsu użytkownika
Zadeklaruj Symbols
wszystkie nowe elementy interfejsu użytkownika w sekcji pliku vsct .
Aby zadeklarować elementy interfejsu użytkownika
W elemecie
Symbols
dodaj trzy elementy GuidSymbol . KażdyGuidSymbol
element maname
atrybut ivalue
atrybut.name
Ustaw atrybut tak, aby odzwierciedlał przeznaczenie elementu. Atrybutvalue
przyjmuje identyfikator GUID. (Aby wygenerować identyfikator GUID, na Menu Narzędzia wybierz pozycję Utwórz identyfikator GUID, a następnie wybierz pozycję Format rejestru.Pierwszy
GuidSymbol
element reprezentuje pakiet i zazwyczaj nie ma elementów podrzędnych. DrugiGuidSymbol
element reprezentuje zestaw poleceń i będzie zawierać wszystkie symbole definiujące menu, grupy i polecenia. TrzeciGuidSymbol
element reprezentuje magazyn obrazów i zawiera symbole dla wszystkich ikon poleceń. Jeśli nie masz poleceń korzystających z ikon, możesz pominąć trzeciGuidSymbol
element.W elemecie reprezentującym
GuidSymbol
zestaw poleceń dodaj co najmniej jeden element IDSymbol . Każdy z tych elementów reprezentuje menu, pasek narzędzi, grupę lub polecenie dodawane do interfejsu użytkownika.Dla każdego
IDSymbol
elementu ustawname
atrybut na nazwę, która będzie używana do odwoływania się do odpowiedniego menu, grupy lub polecenia, a następnie ustawvalue
element na numer szesnastkowy, który będzie reprezentować jego identyfikator polecenia. Żadne dwaIDSymbol
elementy, które mają ten sam element nadrzędny, mogą mieć tę samą wartość.Jeśli którykolwiek z elementów interfejsu użytkownika wymaga ikon, dodaj
IDSymbol
element dla każdej ikony do elementu reprezentującegoGuidSymbol
magazyn obrazów.
Umieszczanie elementów interfejsu użytkownika w środowisku IDE
Elementy Menu, Grupy i Przyciski zawierają definicje wszystkich menu, grup i poleceń zdefiniowanych w pakiecie. Umieść te menu, grupy i polecenia w środowisku IDE przy użyciu elementu nadrzędnego, który jest częścią definicji elementu interfejsu użytkownika lub za pomocą elementu CommandPlacement zdefiniowanego gdzie indziej.
Każdy Menu
element , Group
i Button
ma guid
atrybut i id
atrybut. Zawsze ustaw guid
atrybut tak, aby był zgodny z nazwą GuidSymbol
elementu, który reprezentuje zestaw poleceń, i ustaw id
atrybut na nazwę elementu reprezentującego IDSymbol
menu, grupę lub polecenie w Symbols
sekcji.
Aby zdefiniować elementy interfejsu użytkownika
Jeśli definiujesz nowe menu, podmenus, menu skrótów lub paski narzędzi, dodaj
Menus
element doCommands
elementu. Następnie dla każdego menu do utworzenia dodaj element Menu doMenus
elementu .guid
Ustaw atrybutyMenu
iid
elementu, a następnie ustawtype
atrybut na odpowiedni rodzaj menu. Można również ustawićpriority
atrybut w celu ustalenia względnej pozycji menu w grupie nadrzędnej.Uwaga
Atrybut
priority
nie ma zastosowania do pasków narzędzi i menu kontekstowych.Wszystkie polecenia w środowisku IDE programu Visual Studio muszą być hostowane przez grupy poleceń, które są bezpośrednimi elementami podrzędnymi menu i pasków narzędzi. Jeśli dodasz nowe menu lub paski narzędzi do środowiska IDE, muszą one zawierać nowe grupy poleceń. Możesz również dodać grupy poleceń do istniejących menu i pasków narzędzi, aby można było wizualnie zgrupować polecenia.
Po dodaniu nowych grup poleceń należy najpierw utworzyć
Groups
element, a następnie dodać do niego element Grupuj dla każdej grupy poleceń.guid
Ustaw atrybuty iid
każdegoGroup
elementu, a następnie ustawpriority
atrybut w celu ustalenia względnej pozycji grupy w menu nadrzędnym. Aby uzyskać więcej informacji, zobacz Tworzenie grup przycisków wielokrotnego użytku.Jeśli dodasz nowe polecenia do środowiska IDE, dodaj
Buttons
element doCommands
elementu . Następnie dla każdego polecenia dodaj element Button doButtons
elementu .guid
Ustaw atrybuty iid
każdegoButton
elementu, a następnie ustawtype
atrybut na odpowiedni przycisk. Można również ustawićpriority
atrybut w celu ustalenia względnej pozycji polecenia w grupie nadrzędnej.Uwaga
Służy
type="button"
do standardowych poleceń menu i przycisków na paskach narzędzi.W elemecie
Button
dodaj element Strings zawierający element ButtonText i element CommandName . ElementButtonText
zawiera etykietę tekstową elementu menu lub etykietkę narzędzia dla przycisku paska narzędzi. ElementCommandName
zawiera nazwę polecenia do użycia w obszarze poleceń.Jeśli polecenie będzie mieć ikonę , utwórz element Ikona w elemecie
Button
i ustaw jegoguid
atrybuty iid
naBitmap
element ikony.Uwaga
Przyciski paska narzędzi muszą mieć ikony.
Aby uzyskać więcej informacji, zobacz MenuPolecenia a OleMenuCommands.
Jeśli którekolwiek z poleceń wymaga ikon, dodaj element Mapy bitowe do
Commands
elementu . Następnie dla każdej ikony dodaj element Mapy bitowej doBitmaps
elementu . W tym miejscu określasz lokalizację zasobu mapy bitowej. Aby uzyskać więcej informacji, zobacz Dodawanie ikon do poleceń menu.Można polegać na strukturze rodzicielstwa, aby poprawnie umieścić większość menu, grup i poleceń. W przypadku bardzo dużych zestawów poleceń lub gdy menu, grupa lub polecenie musi być wyświetlane w wielu miejscach, zalecamy określenie umieszczania poleceń.
Aby polegać na elementach nadrzędnych w celu umieszczenia elementów interfejsu użytkownika w środowisku IDE
W przypadku typowego elementu nadrzędnego utwórz
Parent
element w każdymMenu
elemecie ,Group
iCommand
zdefiniowanym w pakiecie.Elementem docelowym elementu
Parent
jest menu lub grupa, która będzie zawierać menu, grupę lub polecenie.guid
Ustaw atrybut na nazwęGuidSymbol
elementu, który definiuje zestaw poleceń. Jeśli element docelowy nie jest częścią pakietu, użyj identyfikatora GUID dla tego zestawu poleceń, zgodnie z definicją w odpowiednim pliku vsct .id
Ustaw atrybut tak, aby był zgodny z atrybutemid
menu lub grupy docelowej. Aby zapoznać się z listą menu i grup udostępnianych przez program Visual Studio, zobacz identyfikatory GUID i identyfikatory menu programu Visual Studio lub identyfikatory i identyfikatory pasków narzędzi programu Visual Studio.
Jeśli masz dużą liczbę elementów interfejsu użytkownika do umieszczenia w środowisku IDE lub jeśli masz elementy, które powinny być wyświetlane w wielu miejscach, zdefiniuj ich umieszczanie w elemecie CommandPlacements , jak pokazano w poniższych krokach.
Aby użyć umieszczania poleceń do umieszczania elementów interfejsu użytkownika w środowisku IDE
Po elemencie
Commands
dodaj elementCommandPlacements
.W elememencie
CommandPlacements
dodajCommandPlacement
element dla każdego menu, grupy lub polecenia, aby go umieścić.Każdy
CommandPlacement
element lubParent
element umieszcza jedno menu, grupę lub polecenie w jednej lokalizacji środowiska IDE. Element interfejsu użytkownika może mieć tylko jeden element nadrzędny, ale może mieć wiele umieszczania poleceń. Aby umieścić element interfejsu użytkownika w wielu lokalizacjach, dodajCommandPlacement
element dla każdej lokalizacji.guid
Ustaw atrybuty iid
każdegoCommandPlacement
elementu na menu hostingu lub grupę, tak samo jak w przypadkuParent
elementu. Można również ustawićpriority
atrybut w celu ustalenia względnej pozycji elementu interfejsu użytkownika.Umieszczanie można mieszać za pomocą elementu nadrzędnego i umieszczania poleceń. Jednak w przypadku bardzo dużych zestawów poleceń zalecamy użycie tylko umieszczania poleceń.
Dodawanie wyspecjalizowanych zachowań
Możesz użyć elementu CommandFlag , aby zmodyfikować zachowanie menu i poleceń, na przykład, aby zmienić ich wygląd i widoczność. Możesz również mieć wpływ na to, kiedy polecenie jest widoczne za pomocą elementu VisibilityConstraints lub dodać skróty klawiaturowe za pomocą elementu KeyBindings. Niektóre rodzaje menu i poleceń mają już wbudowane wyspecjalizowane zachowania.
Aby dodać wyspecjalizowane zachowania
Aby element interfejsu użytkownika był widoczny tylko w niektórych kontekstach interfejsu użytkownika, na przykład po załadowaniu rozwiązania, użyj ograniczeń widoczności.
Po elemencie
Commands
dodaj elementVisibilityConstraints
.Dla każdego elementu interfejsu użytkownika do ograniczenia dodaj element VisibilityItem .
Dla każdego
VisibilityItem
elementu ustawguid
atrybuty iid
na menu, grupę lub polecenie, a następnie ustawcontext
atrybut na odpowiedni kontekst interfejsu użytkownika, zgodnie z definicją UIContextGuids80 w klasie.
Aby ustawić widoczność lub dostępność elementu interfejsu użytkownika w kodzie, użyj co najmniej jednej z następujących flag poleceń:
DefaultDisabled
DefaultInvisible
DynamicItemStart
DynamicVisibility
NoShowOnMenuController
NotInTBList
Aby uzyskać więcej informacji, zobacz element CommandFlag .
Aby zmienić sposób wyświetlania elementu lub zmienić jego wygląd dynamicznie, użyj co najmniej jednej z następujących flag poleceń:
AlwaysCreate
CommandWellOnly
DefaultDocked
DontCache
DynamicItemStart
FixMenuController
IconAndText
Pict
StretchHorizontally
TextMenuUseButton
TextChanges
TextOnly
Aby uzyskać więcej informacji, zobacz element CommandFlag .
Aby zmienić sposób, w jaki element reaguje po odebraniu poleceń, użyj co najmniej jednej z następujących flag poleceń:
AllowParams
CaseSensitive
CommandWellOnly
FilterKeys
NoAutoComplete
NoButtonCustomize
NoKeyCustomize
NoToolbarClose
PostExec
RouteToDocs
TextIsAnchorCommand
Aby uzyskać więcej informacji, zobacz element CommandFlag .
Aby dołączyć skrót klawiaturowy zależny od menu lub elementu w menu, dodaj znak ampersand (&) w elemencie
ButtonText
menu lub elementu menu. Znak, który jest zgodny z znakiem i jest aktywnym skrótem klawiaturowym po otwarciu menu nadrzędnego.Aby dołączyć niezależny od menu skrót klawiaturowy do polecenia, użyj elementu KeyBindings . Aby uzyskać więcej informacji, zobacz element KeyBinding .
Aby zlokalizować tekst menu, użyj
LocCanonicalName
elementu . Aby uzyskać więcej informacji, zobacz element Strings .Niektóre typy menu i przycisków obejmują wyspecjalizowane zachowania. Na poniższej liście opisano niektóre wyspecjalizowane typy menu i przycisków. Aby uzyskać informacje o innych typach, zobacz
types
opisy atrybutów w menu, przycisku i elementach kombi.Pole kombi: pole kombi to lista rozwijana, która może być używana na pasku narzędzi. Aby dodać pola kombi do interfejsu użytkownika, utwórz element Kombi w elemecie
Commands
. Następnie dodaj element doCombos
elementuCombo
dla każdego pola kombi, aby dodać.Combo
elementy mają te same atrybuty i elementy podrzędne coButton
elementy, a także mająDefaultWidth
iidCommandList
atrybuty. AtrybutDefaultWidth
ustawia szerokość w pikselach, aidCommandList
atrybut wskazuje identyfikator polecenia używany do wypełnienia pola kombi.Kontroler menu: kontroler menu to przycisk, który zawiera strzałkę obok niego. Kliknięcie strzałki powoduje otwarcie listy. Aby dodać kontroler menu do interfejsu użytkownika, utwórz
Menu
element i ustaw jegotype
atrybut naMenuController
lubMenuControllerLatched
, w zależności od żądanego zachowania. Aby wypełnić kontroler menu, ustaw go jako element nadrzędnyGroup
elementu. Kontroler menu wyświetli wszystkie elementy podrzędne tej grupy na liście rozwijanej.