MFC中的Document/View结构至关重要。Document负责存储数据,View负责显示数据。一个Document可以对应几个View,而一个View只能同时显示一个Document。Document、View和余下的Application Framework之间有一个复杂的握手过程。要了解这个过程需要熟悉几个函数:
1、CView::GetDocument
内联函数,使一个View得到自己对应的Document。如果使View派生的类对象调用它,那么将得到Document派生的类指针。
2、CDocument::UpdateAllViews
当存储数据发生改变时,Document用此函数通知所有与它对应的View进行更新显示内容。在CDocument的派生类中调用它时,省略第一个参数pSender;在CView的派生类中调用它时,pSender设为this指针,以此告知函数不必通知本CView派生类不用更新。
3、CView::OnUpdate
虚函数。CView的派生类调用此函数以回应CDocument::UpdateAllView。它访问CDocument,取得CDocument数据并更新CView的成员变量或者控件。
4、CView::OnInitialUpdate
虚函数。当程序开始、点击“新建”、“打开”菜单时,该程序将被调用。当重载此函数时,要确保调用了基类CView的OnInitialUpdate函数。基类中的OnInitialUpdate函数除了调用OnUpdate函数外什么都不做。
5、CDocument::OnNewDocument
虚函数。当第一个CDocument对象创建和点击“新建”菜单(在SDI应用程序中)时,该函数被调用。这个函数适合初始化CDocument对象的数据。重载此函数时要保证调用基类的OnNewDocument。
转载于:https://blog.51cto.com/yanghao/71268