打开标准编辑器
打开标准编辑器时,可以让 IDE 确定指定文件类型的标准编辑器,而不是为文件指定特定于项目的编辑器。
完成以下过程来实现 OpenItem 该方法。 这将在标准编辑器中打开项目文件。
使用标准编辑器实现 OpenItem 方法
调用 IVsRunningDocumentTable (
RDT_EditLock
) 确定文档数据对象文件是否已打开。如果文件已打开,请通过调用IsDocumentOpen方法重新显示文件,并指定参数的值
IDO_ActivateIfOpen
grfIDO
。如果文件已打开,并且文档由与调用项目不同的项目拥有,则项目会收到一条警告,指出打开的编辑器来自另一个项目。 然后显示文件窗口。
如果文档未在正在运行的文档表中打开或未打开,请调用 OpenStandardEditor 方法 (
OSE_ChooseBestStdEditor
) 以打开文件的标准编辑器。调用该方法时,IDE 将执行以下任务:
IDE 扫描注册表中的 Editors/{guidEditorType}/Extensions 子项,以确定哪个编辑器可以打开该文件,并具有执行此操作的最高优先级。
在 IDE 确定哪个编辑器可以打开该文件后,IDE 将调用 CreateEditorInstance。 此方法的编辑器实现返回 IDE 调用 CreateDocumentWindow 和网站新打开的文档所需的信息。
最后,IDE 使用通常的持久性接口(例如 IVsPersistDocData2)加载文档。
如果 IDE 之前已确定层次结构或层次结构项可用,IDE 将调用 GetItemContext 项目中的方法以获取项目级上下文 IServiceProvider 指针,以便通过 CreateDocumentWindow 方法调用传递回。
IServiceProvider如果要让编辑器从项目获取上下文,请在 IDE 调用GetItemContext项目时返回指向 IDE 的指针。
执行此步骤可让项目向编辑器提供其他服务。
如果文档视图或文档视图对象已成功网站在窗口框架中,则通过调用 LoadDocData来初始化该对象的数据。