Поделиться через


алгоритм маршрутизации команд

В командах Visual Studio обработка нескольких различных компонентов. Команды направляются из самого внутреннего контекста, который основан на текущем выделенном фрагменте, к внешней (также называется глобальным) контексту. Дополнительные сведения см. в разделе Доступность команд.

Порядок разрешения команды

Команды, передаются через следующие уровни контекста команды:

  1. Надстройки: Среда сначала предлагает команду к любому надстройки, имеется.

  2. Команды приоритета: Эти команды зарегистрированы с помощью IVsRegisterPriorityCommandTarget. Они вызываются для каждой команды в Visual Studio, и вызываются в том порядке, в котором они были зарегистрированы.

  3. Команды контекстного меню. Команда расположенная в контекстном меню, сначала предложена в целевой объект команды, который реализуется контекстное меню и выберите после, до обычной маршрутизации.

  4. Целевые объекты команды панели инструментов заданы: Эти целевые объекты регистрируются при вызове команды SetupToolbar2. Параметр pCmdTarget может иметь значение null. Если нет nullзатем этот целевой объект команды используется для обновления всех команд, расположенные на панели инструментов настраивается. Если оболочка настраивает пользовательскую панель инструментов, она передает как фрейм окна pCmdTarget таким образом, что все обновления в команды на панели инструментов пропустят через границу окна, даже если не фокуса.

  5. Окно инструментов. Окна инструментов, которые обычно реализуется IVsWindowPane интерфейс, также должен реализовывать IOleCommandTarget интерфейс, с помощью которого Visual Studio мог получить целевой объект команды, если окно инструментов активного окна. Однако если окно инструментов, в котором находится фокус Проект окно, затем команда перенаправляется IVsUIHierarchy интерфейс, общий родительский выбранных элементов. Если несколько проектов диапазонов данного выделения, направляются на команда IVsSolution иерархия. ExecCommand интерфейс содержит IOleCommandTarget и QueryStatusCommand методы, которые аналогичны соответствующим командам на IVsUIHierarchy интерфейс.

  6. Окно документа. Если команда имеет RouteToDocs пометить в файле .vsct Visual Studio выполняет поиск целевой объект команды, связанное с объектом (object) представления документа, любой экземпляр IVsWindowPane интерфейс или экземпляр объекта документа (обычно IVsTextLines интерфейс или a IVsTextBuffer интерфейс). Если объект представления документа не поддерживает команду, направляет команду в Visual Studio IOleCommandTarget интерфейс, который возвращается. (Это необязательный интерфейс для объектов данных документа.)

  7. Текущая иерархии: Текущая иерархия может быть проектом, имеющий окно активного документа или иерархии, выбранной в пределах Обозреватель решений. Visual Studio выполняет поиск IOleCommandTarget интерфейс, реализованный на протяжении или активным, иерархия. Иерархия должна поддерживать команды, которые допустимы если иерархия активна, даже если окно документа элемента проекта имеет фокус. Однако команды, которые применяются только в том случае, если ExecCommandимеет фокус быть поддерживается с помощью интерфейс и сво QueryStatusCommand и Обозреватель решенийIVsUIHierarchy методы.

    Вырезать" копия" Вставить" Удалить" Переименовать" Insertи Дважды щелкнуть команды требуют специальной обработки. Дополнительные сведения об обработке Удалить и Убрать команды в иерархиях см. в разделах IVsHierarchyDeleteHandler интерфейс.

  8. Глобальный. Если команда не обработана упомянутыми ранее контекстами Visual Studio пытается направить ее в VSPackage, который содержит команды, реализующий IOleCommandTarget интерфейс. Если VSPackage еще не загружена, то она не загружается, когда Visual Studio вызывает QueryStatus метод. VSPackage только при загрузке Exec вызывается метод.

См. также

Другие ресурсы

Command Routing in VSPackages

Команды конструктора