文档/视图架构概述

文档和视图在典型的 MFC 应用程序中配对。 数据存储在文档中,但视图具有对数据的特权访问权限。 文档与视图的分离将数据的存储和维护与其显示区分开。

从视图中获取对文档数据的访问权限

视图使用 GetDocument 函数(返回指向文档的指针)或通过使视图类成为文档类的 C++ friend 来访问其文档的数据。 然后,当视图准备好绘制或处理数据时,该视图将使用其对数据的访问权限来获取数据。

例如,从视图的 OnDraw 成员函数中,视图使用 GetDocument 来获取文档指针。 然后使用该指针访问 CString 文档中的数据成员。 该视图将字符串传递给 TextOut 函数。 若要查看此示例的代码,请参阅 “在视图中绘图”。

用户对视图的输入

视图还可以将自身内的鼠标单击解释为选择或编辑数据。 同样,它可能会将击键解释为数据输入或编辑。 假设用户在管理文本的视图中键入字符串。 该视图获取指向文档的指针,并使用该指针将新数据传递给文档,文档将这些数据存储在某些数据结构中。

更新同一文档的多个视图

在具有相同文档的多个视图(例如文本编辑器中的拆分器窗口)的应用程序中,视图首先将新数据传递到文档。 然后,它会调用文档的 UpdateAllViews 成员函数,该函数告知文档的所有视图自行更新,从而反映新数据。 这会同步这些视图。

你想进一步了解什么

另请参阅

文档/视图体系结构