文档和视图在典型的 MFC 应用程序中配对。 数据存储在文档中,但视图具有对数据的特权访问权限。 文档与视图的分离将数据的存储和维护与其显示区分开。
从视图中获取对文档数据的访问权限
该视图使用 GetDocument 函数访问其文档的数据,该函数返回指向文档的指针,或通过使视图类成为文档类的C++ friend
。 然后,当视图准备好绘制或作数据时,该视图将使用其对数据的访问权限来获取数据。
例如,从视图的 OnDraw 成员函数中,视图用于 GetDocument
获取文档指针。 然后使用该指针访问 CString
文档中的数据成员。 该视图将字符串传递给 TextOut
函数。 若要查看此示例的代码,请参阅 “在视图中绘图”。
用户对视图的输入
视图还可以将自身内的鼠标单击解释为选择或编辑数据。 同样,它可能会将击键解释为数据输入或编辑。 假设用户在管理文本的视图中键入字符串。 该视图获取指向文档的指针,并使用指针将新数据传递给文档,该数据将其存储在某些数据结构中。
更新同一文档的多个视图
在具有相同文档的多个视图(例如文本编辑器中的拆分器窗口)的应用程序中,视图首先将新数据传递到文档。 然后,它会调用文档的 UpdateAllViews 成员函数,该函数告知文档的所有视图自行更新,从而反映新数据。 这会同步视图。