当用户打开该项目时的文件,环境通过轮询处理,最终打开相应的编辑器或设计器该文件中。 此环境使用的初始过程是相同的标准和自定义编辑器的。 该环境使用的编辑器中打开文件和 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_SVsRegistorEditor的 QueryService ,使用 RegisterEditor 方法注册该环境的编辑工厂。
该环境现在再次检查其内部列表注册编辑器查找 .rtf 文件的最新签入的编辑工厂。 该环境调用 CreateEditorInstance 方法的实现,通过在文件名和视图创建的类型。