自定义编辑器中的文档数据和文档视图

自定义编辑器由两个部分组成:文档数据对象和文档视图对象。 顾名思义,文档数据对象表示要显示的文本数据。 同样,文档视图对象(或“view”)表示显示文档数据对象的一个或多个窗口。

文档数据对象

文档数据对象是文本缓冲区中文本的数据表示形式。 它是一个 COM 对象,用于存储文档文本和其他信息。 文档数据对象还处理文档持久性,并启用其数据的多个视图。 有关详细信息,请参阅

DocumentData[]文档窗口

自定义编辑器和设计器可以选择使用 VsTextBuffer 对象或自己的自定义缓冲区。 VsTextBuffer 遵循标准编辑器的简化嵌入模型,支持多个视图,并提供用于管理多个视图的事件接口。

文档视图对象

显示代码和其他文本的窗口称为文档视图或视图。 创建编辑器时,可以选择单个视图,其中文本显示在单个窗口中。 或者,可以选择多个视图,其中文本显示在多个窗口中。 你的选择取决于应用程序。 例如,如果需要并行编辑,可以选择多个视图。 每个视图都与运行文档表(RDT)的集成开发环境(IDE)中的条目相关联。 视图窗口属于项目或 IVsHierarchy 对象。

如果编辑器支持文档数据对象的多个视图,则文档数据和文档视图对象必须分开。 否则,可以组合在一起。 有关详细信息,请参阅 “支持多个文档视图”。

IDE 通过匹配正在运行的文档表中每个条目的项标识符(ItemID)通知有关事件(例如,关闭包含文档的解决方案时)。 有关详细信息,请参阅 “运行文档表”。

有两个选项可用于为自定义编辑器创建视图。 一个是就地激活模型,其中视图使用 ActiveX 控件或文档数据对象托管在窗口中。 第二种是简化的嵌入模型,其中视图由 Visual Studio 托管,并 IVsWindowPane 实现用于处理窗口命令。 有关就地激活模型的信息,请参阅 就地激活。 有关简化嵌入模型的信息,请参阅 简化的嵌入。