Практическое руководство. Представления подключения к данным документа
Если имеется представление нового документа, можно иметь возможность вложения к существующему объекту данных документа. Обзор процессов см. в разделе Надежное программирование ниже.
Определить, можно вложить представление к существующему объекту данных документа
Реализуйте интерфейс CreateEditorInstance.
В реализации IVsEditorFactory::CreateEditorInstanceвызов QueryInterface в существующем объекте данных документа, когда интегрированная среда разработки называется пользовательским CreateEditorInstance реализация.
Вызов QueryInterface позволяет проанализировать существующий объект данных документа, который определен в punkDocDataExisting параметр.
Явные интерфейсы необходимо запросить, однако зависит от редакторе, открывает документ, как описано в шаге 4.
Если не найдено соответствующие интерфейсы в существующем объекте данных документа, верните код ошибки в редактор, указывающее, что объект данных документа несовместим с редактором.
В реализации интегрированной среды разработки OpenStandardEditorокно сообщений сообщает, что документ открыт в другом редакторе и запрашивает если необходимо закрыть его.
Если закрыть этот документ Visual Studio вызывает в фабрику редактора во второй раз. В этом вызове DocDataExisting параметр равен NULL. Реализация фабрики редактора может затем открыть объект данных документа в собственном редакторе.
Примечание
Чтобы определить, можно ли работать с существующим объектом данных документа можно также использовать закрытый набор знаний реализации интерфейса с помощью приведения указатель на фактическию Visual C++ класс реализации своей частной.Например, все стандартный реализовать редакторов IVsPersistFileFormat, от которого наследует IPersist.Таким образом, можно вызвать метод QueryInterface для GetClassIDи, если идентификатор класса на существующем объекте данных документа соответствует идентификатор класса реализации, а затем вам может работать с объектом данных документа.
Отказоустойчивость
При вызове реализации Visual Studio CreateEditorInstance метод, он передает обратно указатель на существующий объект данных в punkDocDataExisting параметр, если таковой существует. Просмотрите возвращенный объект данных внутри документа punkDocDataExisting определить, является ли объект данных документа, подходящий для редактора как описано в заметку в шаге 4 процедуры в этом разделе. Если соответствующее, фабрика редактора должен предоставить второе представление данных, как описано в Поддержка нескольких представления документа. Если нет, после чего он должен указать соответствующее сообщение об ошибке.
См. также
Основные понятия
Поддержка нескольких представления документа
Данные и представление документа в специализированных редакторах документа