《第13章节05视图对象》由会员分享,可在线阅读,更多相关《第13章节05视图对象(6页珍藏版)》请在金锄头文库上搜索。
1、视 图 对 象,本讲大纲:,支持网站:,视图对象的主要方法,视图的初始化,视图的绘制,视图的销毁,视图对象的主要方法,视图的初始化,前面已经介绍,视图是通过调用框架的CreateView方法创建的。当视图调用Create方法时,会通过:CreateWindowEx方法,引发WM_Create消息,执行OnCreate事件处理函数,将自身添加到文档对象的视图列表中。那么视图在被创建时,是如何初始化的呢? 这需要查看文档模板的OpenDocumentFile方法。在OpenDocumentFile方法的结尾处调用了InitialUpdateFrame方法初始化更新,而该方法直接调用了框架对象的In
2、itial UpdateFrame方法,在框架对象的InitialUpdateFrame方法中向所有视图发送了WM_INITIAL UPDATE消息。 SendMessageToDescendants(WM_INITIALUPDATE, 0, 0, TRUE, TRUE); 这样,视图对象将处理WM_INITIALUPDATE消息,执行OnInitialUpdate方法,而该方法直接调用OnUpdate方法更新数据。 void CView:OnInitialUpdate() OnUpdate(NULL, 0, NULL); void CView:OnUpdate(CView* pSender,
3、 LPARAM /*lHint*/, CObject* /*pHint*/) ASSERT(pSender != this); UNUSED(pSender); Invalidate(TRUE); ,视图的绘制,视图的主要作用是显示数据。那么视图是如何显示数据的呢? 上小节已经介绍,视图的初始化是调用OnUpdate方法更新数据的。分析OnUpdate方法,该方法调用了Invalidate方法,而Invalidate方法会引发WM_PAINT消息,最终调用视图对象的OnPaint消息处理函数。 void CView:OnPaint() CPaintDC dc(this); OnPrepareDC( ,视图的销毁,Thank you,还有什么疑问可以到提出 也可以以发送邮件到 ,