Поддержка представления нескольких документов
Вы можете предоставить несколько представлений документа, создав отдельные данные документа и объекты представления документов для редактора. Некоторые случаи, в которых полезно дополнительное представление документов:
Поддержка нового окна: вы хотите, чтобы редактор предоставлял два или более представлений одного типа, чтобы пользователь, у которого уже открыто окно в редакторе, можно открыть новое окно, выбрав команду "Создать окно" в меню "Окно".
Поддержка представления формы и кода: вы хотите, чтобы редактор предоставлял представления различных типов. Например, Visual Basic предоставляет представление формы и представление кода.
Дополнительные сведения об этом см. в процедуре CreateEditorInstance в файле EditorFactory.cs в проекте пользовательского редактора, созданном шаблоном пакета Visual Studio. Дополнительные сведения об этом проекте см. в пошаговом руководстве по созданию пользовательского редактора.
Синхронизация представлений
При реализации нескольких представлений объект данных документа отвечает за сохранение всех представлений, синхронизированных с данными. Интерфейсы обработки событий можно использовать для синхронизации нескольких VsTextBuffer представлений с данными.
Если объект не используется VsTextBuffer для синхронизации нескольких представлений, необходимо реализовать собственную систему событий для обработки изменений, внесенных в объект данных документа. Для актуальности нескольких представлений можно использовать различные уровни детализации. При настройке максимальной детализации при вводе в одном представлении другие представления обновляются немедленно. С минимальной степенью детализации другие представления не обновляются до их активации.
Определение того, открыты ли данные документа
Запущенная таблица документов (RDT) в интегрированной среде разработки (IDE) помогает отслеживать, открыты ли данные для документа, как показано на следующей схеме.
Несколько представлений
По умолчанию каждое представление (объект представления документа) содержится в собственном окне (IVsWindowFrame). Как уже отмечалось, данные документа могут отображаться в нескольких представлениях. Для этого Visual Studio проверка RDT, чтобы определить, открыт ли документ в редакторе. При вызове CreateEditorInstance интегрированной среды разработки для создания редактора значение, отличное от NULL, возвращаемое в параметре punkDocDataExisting
, указывает, что документ уже открыт в другом редакторе. Дополнительные сведения о том, как функции RDT см. в статье "Запуск таблицы документов".
IVsEditorFactory В реализации изучите объект данных документа, возвращенный в punkDocDataExisting
документе, чтобы определить, подходили ли данные документа для редактора. (Например, только HTML-данные должны отображаться редактором HTML.) Если это уместно, фабрика редактора должна предоставить второе представление для данных. punkDocDataExisting
Если параметр не NULL
задан, возможно, объект данных документа открыт в другом редакторе или, скорее всего, данные документа уже открыты в другом представлении с тем же редактором. Если данные документа открыты в другом редакторе, который не поддерживает фабрика редакторов, Visual Studio не сможет открыть фабрику редакторов. Дополнительные сведения см. в разделе "Практическое руководство. Присоединение представлений к данным документа".