My pages

by Sergey Vinyarsky

VSCT - продолжение

Продолжаем прошлый пост

Пример: Иконки в меню

Visual Studio поддерживает только изображения размером 16x16 и глубиной 8-bit (256 цветов) или 32-bit (TrueColor). Разумеется предпочтительно применять TrueColor. Обычно все изображения помещаются в один файл в формате bmp, gif или png. Иконки размещаются в одну линию по горизонтали, то есть общий размер изображения составит по вертикали 16 пикселей, а по горизонтали - 16 умноженное на количество иконок.

Добавим иконки к командам Package menu item 1 и Package menu item 2:

Я подготовил файл Icons16x16.png:

Результирующий VSCT приобрел следующий вид (убраны некоторые оставшиеся неизменными части для уменьшения объема):

Добавился элемент Bitmaps со ссылкой на файл изображения и требуемые ему константы в Symbols.

Не забудьте включить Icons16x16.png в ресурсы проекта.

Ссылка на иконку выполняются через GUID файла с изображениями и идентификатора конкретной иконки. Порядок перечисления идентификаторов в атрибуте usedList должен соответствовать порядку иконок в файле слева направо. Численные значения идентификаторов (pngCommand1 и pngCommand2) значения не имеют.

К огромному сожалению, добавление иконки к подменю через VSCT-файлы не поддерживается

Пример: Добавление тулбара

Использование меню не всегда удобно, иногда самые часто используемые команды лучше вынести в виде тулбара. Поскольку в нашем меню наконец-то появились иконки, самое время его преобразовать в тулбар, тем более, что это не требует особых усилий.

Единственное, что нам надо сделать - это указать, что наше подменю на самом деле не меню, а тулбар. Изменим значение атрибута type на Toolbar вместо Menu:

Поскольку все тулбары живут сами по себе и не могут “встраиваться” в родительские тулбары, мы не можем корректно заполнить элемент Parent, поэтому достаточно сослаться на себя же: идентификатор подменю MySubMenu и идентификатор его родителя тоже MySubMenu.

Дальше с нашим тулбаром можно работать как и с любым другим. Например указать VisualStudio показать команду в текстовом виде:

Пример: Добавление шорткатов

А если нам лень даже мышку подвинуть к тулбару, можно присвоить командам горячие комбинации клавиш. Добавим в файл элемент KeyBindings:

Здесь id - идентификаторы команд, editor - область действия нашего шортката. guidVSStd97 означает “глобально”, в любом режиме работы VisualStudio. В общем случае KeyBinding задается так:

Если шорткат “одинарный”, например, CTRL-C, то он задается в key1 и mod1, а key2 и mod2 опускаются. Ежели мы хотим задать составной шорткат, например, CTRL-E/CTRL-C (нажимаем CTRL-E и затем CTRL-C), то получится

К сожалению, или к счастью, если у какой-либо глобальной команды (у которой editor=“guidVSStd97”) уже задан такой же шорткат, какой хотим и мы, то студия наш запрос проигнорирует. В таком случае есть два выхода: просить пользователя присвоить шорткат нашей команде вручную через меню Customize…, либо перехватывать клавиатуру на низком уровне через IKeyProcessorProvider.

Пока все.