确定要编辑器中打开项目中的文件

当用户打开该项目时的文件,环境通过轮询处理,最终打开相应的编辑器或设计器该文件中。 此环境使用的初始过程是相同的标准和自定义编辑器的。 该环境使用的编辑器中打开文件和 VSPackage 必须与该环境在中的各种条件,当轮询进程。

例如,那么,当用户选择 打开 命令从 文件 菜单中,然后选择与 .rtf 扩展的 filename.rtf (或其他文件),该环境对每个项的 IsDocumentInProject 实现,最终循环通过在解决方案中的所有项实例。 项目返回传递优先级来找出文档的声明的设置标志。 使用最高优先级,环境将调用相应的 OpenItem 方法。 有关轮询过程的详细信息, 添加项目和项目项模板

杂项文件项目就不会被中的其他项声明的所有文件。 ,在标准编辑器中打开之前,因此,自定义编辑器中打开文档。 如果杂项文件项目声明文件,环境 OpenStandardEditor 调用方法打开包含标准编辑的文件。 该环境检查其内部列出一个处理 .rtf 文件的注册编辑器。 此列表位于以下键的注册表:

[HKEY_LOCAL_MACHINE \Software\Microsoft\VisualStudio\AMP_LT版本AMP_GT \Editors\{AMP_LT编辑 factory guidAMP_GT} \Extensions]

环境还检查在 HKEY_CLASSES_ROOT \CLSID key for any objects that have a sub-key DocObject 的类标识符。 如果找到文件扩展名其中,应用程序的嵌入式版本,如 Microsoft Word 中,是要创建的就地在 Visual Studio。 这些文档对象必须是实现 IPersistStorage 接口的复合文件,或对象必须实现 IPersistFileFormat 接口。

如果没有 .rtf 文件的编辑器工厂在注册表中,则环境将处于 HKEY_CLASSES_ROOT \ .rtf 键查找并打开指定的编辑器存在。 如果文件扩展名在 HKEY_CLASSES_ROOT 未找到,则环境使用 Visual Studio 核心文本编辑器打开文件,则为文本文件。

如果核心文本编辑器失败,发生,如果文件不是文本文件,然后该环境的文件使用其二进制编辑器。

如果环境查找 .rtf 扩展的编辑器在其注册表,它将加载实现此编辑工厂的 VSPackage。 该环境对新 VSPackage 中 SetSite 方法。 VSPackage 调用 SID_SVsRegistorEditorQueryService ,使用 RegisterEditor 方法注册该环境的编辑工厂。

该环境现在再次检查其内部列表注册编辑器查找 .rtf 文件的最新签入的编辑工厂。 该环境调用 CreateEditorInstance 方法的实现,通过在文件名和视图创建的类型。

请参见

参考

IPersistFileFormat

IPersistStorage

SetSite

IsDocumentInProject

OpenItem

OpenStandardEditor