Открытие стандартных редакторов

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

Выполните следующую процедуру для реализации OpenItem метода. Откроется файл проекта в стандартном редакторе.

Реализация метода OpenItem с помощью стандартного редактора

  1. Вызов IVsRunningDocumentTable (RDT_EditLock) для определения того, открыт ли файл объекта данных документа.

  2. Если файл уже открыт, повторно создайте файл, вызвав IsDocumentOpen метод, указав значение IDO_ActivateIfOpen параметра grfIDO .

    Если файл открыт и документ принадлежит другому проекту, отличному от вызывающего проекта, проект получает предупреждение о том, что открытый редактор находится из другого проекта. Затем откроется окно файла.

  3. Если документ не открыт или не находится в работающей таблице документов, вызовите OpenStandardEditor метод (OSE_ChooseBestStdEditor), чтобы открыть стандартный редактор для файла.

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

    1. Интегрированная среда разработки сканирует вложенный раздел editors/{guidEditorType}/Extensions в реестре, чтобы определить, какой редактор может открыть файл и имеет самый высокий приоритет для этого.

    2. После того как интегрированная среда разработки определила, какой редактор может открыть файл, интегрированная среда разработки вызывается CreateEditorInstance. Реализация этого метода редактора возвращает сведения, необходимые для вызова CreateDocumentWindow и сайта только что открытого документа интегрированной среды разработки.

    3. Наконец, интегрированная среда разработки загружает документ с помощью обычного интерфейса сохраняемости, например IVsPersistDocData2.

    4. Если интегрированная среда разработки ранее определила доступность элемента иерархии или иерархии, метод интегрированной среды разработки вызывает GetItemContext метод проекта, чтобы получить указатель контекста IServiceProvider на уровне проекта, чтобы вернуться к вызову CreateDocumentWindow метода.

  4. Верните указатель на интегрированную IServiceProvider среду разработки, когда интегрированная среда разработки вызывает GetItemContext проект, если вы хотите разрешить редактору получать контекст из проекта.

    Выполнение этого шага позволяет проекту предлагать дополнительные службы редактору.

    Если объект представления документа или представления документов был успешно расположен в рамке окна, объект инициализируется своими данными путем вызова LoadDocData.