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


Пошаговое руководство: Добавление компонентов в специализированному редактором

После создания специализированного редактора можно добавить дополнительные функции на него.

Создание редактора для VSPackage

  1. Создание специализированного редактора с помощью шаблона проекта пакета Visual Studio.

    Дополнительные сведения см. в разделе Пошаговое руководство: Создание команды меню ресурсов с помощью шаблона пакета Visual Studio.

  2. Решите, нужно ли редактор поддерживать отдельные представление или представления числа, кратного.

    Редактор, поддерживающий Новое окно команда или представление формы и представление кода требует отдельных объектов данных документа и объектов представления документа. В редакторе, который поддерживает только одно представление, объект данных и объект представления документа можно реализовать на этом же объекте.

    Пример нескольких представлений см. в разделе Поддержка нескольких представления документа.

  3. Реализуйте фабрику редактора, реализовав IVsEditorFactory интерфейс.

    Дополнительные сведения см. в разделе фабрики редактора.

  4. Решите, нужно ли использовать редактор встроенной активации или упрощенного внедрения для управления окно объектов представления документа.

    Основные приложения упрощенные внедрения окна редактора стандартное представление документа, а узлы окна редактор встроенной активации элемент управления ActiveX или другой объект в качестве представления активного документа. Дополнительные сведения см. в разделах Упрощенный внедрение и встроенная активация.

  5. Реализуйте IOleCommandTarget интерфейс для обработки команд.

  6. Обеспечьте сохраняемости и ответ документа на внешние изменения файла, выполнив следующие действия:

    1. Чтобы сохранить файл, реализуйте IVsPersistDocData2 и IPersistFileFormat в объекте данных документа этого редактора.

    2. Чтобы ответить на внешние изменения файла, реализуйте IVsFileChangeEx и IVsDocDataFileChangeControl в объекте данных документа этого редактора.

      Примечание

      Вызов QueryService на SVsFileChangeEx получить указатель на IVsFileChangeEx.

  7. Правки документа координат события с элементом управления исходным кодом. Описание процедуры

    1. Получите указатель на IVsQueryEditQuerySave2 путем вызова QueryService на SVsQueryEditQuerySave.

    2. Первое событие происходит, если правки - метод QueryEditFiles метод.

      В этом случае пользователь извлекло файл, если он еще не установлен. Убедитесь, что обработка файла "состояние флажка out" для отвратить ошибкам

    3. Аналогично, перед сохранением файла, вызовите QuerySaveFile метод.

      Этот метод предлагает пользователю сохранить файл, если он не был сохранен или если он был изменен с момента последнего сохранения.

  8. Включение Свойства окно для отображения свойств для текста выбранного в редакторе. Описание процедуры

    1. Вызов OnSelectChange каждый раз при изменении выделения текста, передавая в пользовательскую реализацию ISelectionContainer.

    2. Вызов QueryService на STrackSelection служба для получения указателя на ITrackSelection.

  9. Разрешить пользователям перетаскивать и удалять элементы редактора и Панель элементовили между внешними редакторами (таких как Microsoft Word) и Панель элементов. Описание процедуры

    1. Реализация IDropTarget в редакторе для оповещения среды разработки, что редактор целевой объект перетаскивания.

    2. Реализуйте IVsToolboxUser интерфейс на представлении, поэтому пользовательском редакторе может включить и отключить элементы Панель элементов.

    3. Реализация ResetDefaults и вызов QueryService на SVsToolbox служба для получения указателя на IVsToolbox2 и IVsToolbox3 интерфейсы.

      Это позволяет в VSPackage для добавления новых элементов в Панель элементов.

  10. Решите, нужно ли какие-либо другие дополнительные функции для редактора.

    • Если требуется редактор поддержки операцию синхронного поиска и замены, то команды реализуют IVsFindTarget.

    • Если требуется редактор поддерживать запись макроса, вызовите QueryService для SVsMacroRecorder получить указатель на IVsMacroRecorder.

      Примечание

      Интегрированная среда разработки поддерживает запись макроса, когда редактор поддерживает его.

    • Если нужно использовать окно инструментов макета документа в редакторе реализуйте IVsDocOutlineProvider.

    • Если необходимо использовать строку состояния в редакторе реализуйте IVsStatusbarUser и вызов QueryService для SVsStatusbar получить указатель на IVsStatusBar.

      Например, редактор может выделительной сведения о строке/столбце, режим выделения (поток/окно) и режим вставки (insert или overstrike).

    • Если требуется поддерживать редактор Undo команда - рекомендуемый метод использовать модель OLE диспетчера отката. В качестве альтернативы можно использовать редактор обработки Undo команда напрямую.

  11. Создайте данные реестра, включая идентификатор GUID VSPackage меню редактора и другие функции.

    В следующем примере кода универсальный шаблон, который необходимо поместить в ваш скрипт файла .rgs, чтобы продемонстрировать, как правильно зарегистрировать редактор.

    NoRemove Editors
    {
          ForceRemove {...guidEditor...} = s 'RTF Editor'
          {
             val Package = s '{...guidVsPackage...}'
             ForceRemove Extensions
             {
                val rtf = d 50
             }
          }
    }
    NoRemove Menus
    {
          val {...guidVsPackage...} = s ',203,11'
    }
    
  12. Реализовать поддержку контекстной справки.

    Это позволяет предоставить справки F1 и динамической поддержки окна Справки для элементов в редакторе. Дополнительные сведения см. в разделе Практическое руководство. Укажите контекст для редакторов.

  13. Предоставление объектной модели автоматизации из редактора, реализовав IDispatch интерфейс.

    Дополнительные сведения см. в разделе Способствовать в модели автоматизации.

Надежное программирование

  • Экземпляр редактора создается, когда интегрированная среда разработки вызывает CreateEditorInstance метод. Если редактор поддерживает несколько представлений; CreateEditorInstance создает и данные документа и объекты представления документа. Если объект данных документа уже открыт, то null punkDocDataExisting значение передается IVsEditorFactory::CreateEditorInstance. Реализация фабрики редактора должна определить, является ли существующий объект данных документа совместим с помощью запроса для соответствующих интерфейсов. Дополнительные сведения см. в разделе Поддержка нескольких представления документа.

  • Если используется упрощенный подход внедрения реализуйте IVsWindowPane интерфейс.

  • Если решено использовать встроенную активацию реализуйте следующие интерфейсы:

    IOleObject

    IOleInPlaceActiveObject

    IOleInPlaceComponent

    Примечание

    IOleInPlaceComponent интерфейс используется, чтобы избежать слияния меню OLE 2.

    Пользовательский IOleCommandTarget реализация обрабатывает команды как Вырезать" копияи Вставить. При реализации IOleCommandTargetопределите, требуется ли редактор собственного файла .vsct, чтобы определить собственную структуру меню команды или если он может реализовать определенные стандартные команды: Visual Studio. Как правило, редакторы используют и расширяют меню интегрированной среды разработки и указывают свои панели инструментов. Однако часто требуется для редактора определить собственные специальные команды помимо использования стандартного набора команд интегрированной среды разработки. Чтобы сделать это, редактор должен объявлять стандартные команды он использует, а затем определяет любые новые команды, контекстные меню, панели инструментов и меню верхнего уровня в файле .vsct. При создании редактор встроенной активации, то средство IOleInPlaceComponent и укажите меню и панели инструментов редактора в файле .vsct вместо использования слияния меню OLE 2.

  • Для предотвращения команды меню толпясь в пользовательском интерфейсе, необходимо использовать существующие команды в интегрированной среде разработки перед изобретать новые команды. Общие команды заданы в SharedCmdDef.vsct и ShellCmdDef.vsct. Эти файлы устанавливаются по умолчанию в подкаталоге \ VisualStudioIntegration своего общего \ Inc SDK для Visual Studio программа установки.

  • ISelectionContainer оба могут выражать определяют и выбор нескольких элементов. Каждый выбранный объект реализован как IDispatch объект.

  • Интегрированная среда разработки реализует CreateInstanceдоступная из a в качестве службы CreateInstance или объект, который может быть создан до конца IOleUndoManager . Редактор реализует IOleUndoUnit интерфейс для каждого Undo действие.

  • 2 Размещения специализированный редактор может предоставлять объекты автоматизации.

    • Document.Object

    • Window.Object

См. также

Задачи

Практическое руководство. Укажите контекст для редакторов

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

Способствовать в модели автоматизации