负责编辑功能 (如插入、删除、复制和粘贴的编辑器对文本。 它包含这些功能与语言服务提供的任务,如文本着色、缩进和 IntelliSense 语句完成。
您可以通过三种方法之一来实例化核心编辑器的实例:
请显式创建核心编辑器的实例在窗口中。
提供返回核心编辑器的实例的一个版本工厂
从打开项目层次结构的文件。
以下各节讨论如何使用传统的 API 实例化编辑器。
显式打开核心编辑器实例
当显式获取核心编辑器的实例:
获取 IVsTextBuffer 保存编辑的文档数据对象。
通过创建从 IVsTextBuffer 接口的一 IVsTextLines 接口创建文档数据对象的一个 (可沿的表示形式。
使用 SetBuffer 方法,将 IVsTextLines 作为 IVsCodeWindow 接口的默认实现的实例的文档数据对象,。
使用 CreateToolWindow 方法,用于承载 IVsWindowFrame 接口的 IVsCodeWindow 实例。
此时,显示 IVsWindowFrame 接口提供包含核心编辑器的实例的窗口。
但是,这不是非常有用的实例,,因为它没有快捷键,或者对高级功能。 获取对快捷键和高级功能的访问:
使用 SetLanguageServiceID 方法关联语言服务和编辑器使用的文档数据对象。
创建拥有快捷键或通过设置 IVsWindowFrame 对象公开一些属性使用系统的默认代码页。 为此,请调用与 VSFPROPID_InheritKeyBindings 属性的 SetGuidProperty 方法。
使用 .vsct 文件,若要获取和使用非标准快捷键,请生成它们。 有关更多信息,请参见 Visual Studio 命令 (表。Vsct) 文件。
如何使用编辑工厂获取核心编辑器
当实现与编辑器工厂的一个核心编辑器使用 CreateEditorInstance 方法时,请按照上一节中概述的所有步骤显式承载 IVsCodeWindow 使用 IVsTextBuffer 文档数据对象,在 IVsWindowFrame 对象。
若要显示文本,请从 IVsCodeWindow 对象的一 IVsTextView 接口并调用 CreateEditorInstance 方法。
为编辑器若要提供语言服务,请调用 CreateEditorInstance 方案中的 SetLanguageServiceID 方法。
,当从 CreateEditorInstance 方法时,的核心编辑器若要获取默认快捷键不同,前面的部分中,您使用 CreateEditorInstance 方法返回的命令上下文。
如果 CreateEditorInstance 方法返回命令 GUID 和文本编辑器相同,核心编辑器的实例自动获取默认快捷键。
有关常规信息,请参见 How to: Register an Editor Factory Using MPF Class Attributes 和 演练:创建核心编辑器并注册编辑器文件类型。