打开标准编辑器

打开标准编辑器时,可以让 IDE 确定指定文件类型的标准编辑器,而不是为文件指定特定于项目的编辑器。

完成以下过程来实现 OpenItem 该方法。 这将在标准编辑器中打开项目文件。

使用标准编辑器实现 OpenItem 方法

  1. 调用 IVsRunningDocumentTableRDT_EditLock) 确定文档数据对象文件是否已打开。

  2. 如果文件已打开,请通过调用IsDocumentOpen方法重新显示文件,并指定参数的值IDO_ActivateIfOpengrfIDO

    如果文件已打开,并且文档由与调用项目不同的项目拥有,则项目会收到一条警告,指出打开的编辑器来自另一个项目。 然后显示文件窗口。

  3. 如果文档未在正在运行的文档表中打开或未打开,请调用 OpenStandardEditor 方法 (OSE_ChooseBestStdEditor) 以打开文件的标准编辑器。

    调用该方法时,IDE 将执行以下任务:

    1. IDE 扫描注册表中的 Editors/{guidEditorType}/Extensions 子项,以确定哪个编辑器可以打开该文件,并具有执行此操作的最高优先级。

    2. 在 IDE 确定哪个编辑器可以打开该文件后,IDE 将调用 CreateEditorInstance。 此方法的编辑器实现返回 IDE 调用 CreateDocumentWindow 和网站新打开的文档所需的信息。

    3. 最后,IDE 使用通常的持久性接口(例如 IVsPersistDocData2)加载文档。

    4. 如果 IDE 之前已确定层次结构或层次结构项可用,IDE 将调用 GetItemContext 项目中的方法以获取项目级上下文 IServiceProvider 指针,以便通过 CreateDocumentWindow 方法调用传递回。

  4. IServiceProvider如果要让编辑器从项目获取上下文,请在 IDE 调用GetItemContext项目时返回指向 IDE 的指针。

    执行此步骤可让项目向编辑器提供其他服务。

    如果文档视图或文档视图对象已成功网站在窗口框架中,则通过调用 LoadDocData来初始化该对象的数据。