- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CVIEW(5) CView::OnUpdate函数在文档的数据被改变的时候被调用(即它被用来通知一个视图的关联文档的内容已经被修改),它预示着我们需要重新绘制视图以显示变化后的数据。其中的Invalidate(TRUE)将整个窗口设置为需要重绘的无效区域,它会产生WM_PAINT消息,这样OnDraw将被调用。 假如文档中的数据发生了变化,必须通知所有链接到该文档的视图,这时候文档类的UpdateAllViews函数需要被调用。 CFRAMEWND(1) 在MFC中,文档是真正的数据载体,视图是文档的显示界面,对应同一个文档,可能存在多个视图界面,我们需要另外一种东西来将这些界面管理起来,这个东西就是框架。 CFrameWnd(或其变体之一)支持在文档的一个或多个视图周围提供框架的对象。 CFRAMEWND(2) MFC创造框架类的初衷在于:把界面管理工作独立出来!框架窗口为应用程序的用户界面提供结构框架,它是应用程序的主窗口,负责管理其包容的窗口。一个应用程序启动时会创建一个最顶层的框架窗口。 MFC提供两种类型的框架窗口:单文档窗口SDI和多文档窗口MDI(你可以认为对话框是另一种框架窗口)。单文档窗口一次只能打开一个文档框架窗口,而多文档窗口应用程序中可以打开多个文档框架窗口,即子窗口(Child Window)。这些子窗口中的文档可以为同种类型,也可以为不同类型。 模板、文档、视图、框架的关系 (1)文档保留该文档的视图列表和指向创建该文档的文档模板的指针;文档至少有一个相关联的视图,而视图只能与一个文档相关联。 (2)视图保留指向其文档的指针,并被包含在其父框架窗口中; (3)文档框架窗口(即包含视图的MDI子窗口)保留指向其当前活动视图的指针; (4)文档模板保留其已打开文档的列表,维护框架窗口、文档及视图的映射; (5)应用程序保留其文档模板的列表。 消息流动机制 在基于文档/视图架构的MFC程序中,用户消息(鼠标、键盘输入等)会先发往视图,如果视图未处理则会发往框架窗口。所以,一般来说,消息映射宜定义在视图中。另外,如果一个应用同时拥有多个视图而当前活动视图没有对消息进行处理则消息也会发往框架窗口。 完整的WM_COMMAND消息的处理顺序是视图――文档――框架窗口――应用。 四、文档视结构中各类的重要函数 几个重要的函数 CView类的OnInitialUpdate CView类的OnDraw CView类的GetDocument CDocument类的UpdateAllViews CView类的OnUpdate 四、文档视结构中各类的重要函数 CView类::OnInitialUpdate 当视图第一次与一个文档相关联,在视图尚未显示前,调用该函数。CView基类中的成员函数OnInitialUpdate()的作用就是调用OnUpdate()函数。 可以用派生类的OnInitialUpdate()函数对视图对象进行初始化。当应用程序启动时,应用程序框架调用了OnCreate()函数之后,会立刻调用OnInitialUpdate()函数。 四、文档视结构中各类的重要函数 CView::OnDraw 应用程序几乎所有的绘制工作都是在视图类的OnDraw()函数中完成的。每次当视窗被重新绘制时,应用程序框架都要调用函数OnDraw()。 当用户改变了窗口尺寸,或者窗口恢复了以前被遮盖的部分,或者当应用程序改变了窗口的数据时,窗口都需要被重新绘制。 视图类所继承的Invalidate或InvalidateRect成员调用后会触发对函数OnDraw的调用。 四、文档视结构中各类的重要函数 CView::GetDocument 一个视图对象只有一个与之相联系的文档对象,CView及其派生类只需调用GetDocument()函数就可以取得CDocument类的对象指针,从而用此指针来访问文档类中的所有可见的数据和文档类公有成员函数。 四、文档视结构中各类的重要函数 CDocument::UpdateAllViews 一个文档对象可以有多个视图对象与之对应,所以当文档数据发生了改变,则必须要通知所有的视图对象,以便它们能对所显示的数据进行相应的更新。UpdateAllViews( )函数调用每个视图的成员函数OnUpdate()对相应视图进行更新。 四、文档视结构中各类的重要函数 CView::OnUpdate 当应用程序调用了CDocument类的UpdateAllViews ( )函数时,应用程序框架就会相应的调用此函数。 通常在派生视图类中的OnUpdate()函数要对文档进行访问,读取文档的数据,然后再对视图的数据成员或控制进行更新,以便反映出文档的变化。 附录
文档评论(0)