WinSDK学习--Document/View结构

本文深入解析MFC中Document/View结构的关键概念,包括如何通过内联函数获取Document,如何使用CDocument::UpdateAllViews通知View更新,以及CView::OnUpdate和CView::OnInitialUpdate函数的作用。同时,文章还讨论了MFC的优缺点以及其在Windows程序设计中的局限性。

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。

 

说明:

     摘录:

      MFC尤其问题百出。虽然它大幅简化了某些工作(例如OLE),我却经常发现要让它们按我所想的去工作时,会在其它特性(例如Document/View架构)上碰壁。MFC还不是Windows程序设计者所追求的灵丹妙药,很少有人认为它是一个好的对象导向设计的模型。MFC程序写作者从他们使用的对象类别定义如何工作中受益颇深,并会发现他们经常参考MFC原始码,搞懂这些原始码是学习Windows API的好处之一

****************************************************************************分割线*****************************************************************************************************

     后续添加

转载于:https://www.cnblogs.com/rzhlg/p/3688128.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值