第六章 文档视图结构解析.pptVIP

  • 6
  • 0
  • 约1.06万字
  • 约 27页
  • 2017-03-30 发布于北京
  • 举报
第六章 文档视图结构 本章主要内容 概述 文档与视图 菜单 概述 文档与视图的作用 文档用于管理应用程序的数据 视图用于显示文档并管理与用户的交互 基于文档/视图结构的应用程序的组成 基于CDocument的文档类 基于CView的视图类 基于CFrameWnd的框架结构类 基于CWinApp的主应用程序类 文档与视图的关系 概述 文档与视图的接口 CView::GetDocument()函数:检索其文档的指针 CDocument::UpdateAllViews()函数:更新与某文档相连的视图 CDocument::OnNewDocument()函数:初始化文档成员 CFrameWnd::GetActiveDocument()函数:从任何CFrameWnd的派生类中,访问目前活动的文档 文档与视图 MFC各对象之间的关系 对象的类型 应用程序对象 框架窗口类 文档类 视图类 标识菜单资源的资源ID 对象的关系 文档中含有该文档的视图列表和指向创建该文档的文档模板指针 视图中含有指向文档的指针,视图窗口是文档边框窗口的子窗口 文档边框窗口含有指向当前活动视图的指针 文档模板含有已打开文档的一个列表 应用程序对象含有文档模板的一个列表 Windows跟踪所有已打开的窗口并发送消息给这些窗口 说明: 所有这些关系都是在文档和视图的创建过程中建立的。通过调用全局函数AfxGetApp,任何对象都可获得指向应用程序对象的指针 对象的访问方式 文档与视图 文档类 基本概念 所谓文档,是用户可以在应用程序中保存并在以后恢复的信息 文档对象负责载入、存储和保存数据 文档类的处理操作 从CDocument类派生出各种不同类型的文档类 添加用于存储文档数据的成员变量 在文档类中重载CDocument类的成员函数,该函数是用于从磁盘读文档数据并把文档数据存入磁盘中 若需要,还可重载CDocument类的其他成员函数 文档与视图 文档的串行化 基本概念 用户处理的数据往往需要存盘作永久备份,这种将文档类中数据成员变量的值保存在磁盘文件中,或者将存储在文档文件的数据读取到相应的成员变量中的过程,就称为文档的串行化(Serialize) 串行化的实现 若要实现文档数据的串行化,就必须在文档类中重载CDocument类的成员函数Serialize,以便传送数据给与文件链接的CArchive(归档)类对象,其函数代码如下: void CEx_FloatMenuDoc::Serialize(CArchive ar) { if (ar.IsStoring( )) //当文档数据需要存盘时,CArchive成员函数IsStoring返回TRUE { // TODO: add storing code here } else //当文档数据需要读取时,CArchive成员函数IsStoring返回FALSE { // TODO: add loading code here } } 说明:上述Serialize函数中,ar是CArchive类的对象,它不仅为磁盘文件的CFile对象缓存数据,而且在应用程序中还保存一个内部标记,用来标识“归档”(Archive)是存入(写盘)还是载入(读盘),且每次只有一个活动的归档与文件相连 文档与视图 视图类 基本概念 所谓视图,是信息呈现给用户的方式,它以图形方式显示文档数据、接受用户输入并将其解释成对文档的操作 视图类负责显示和修改存储在文档对象中的数据 视图对象保存指向文档类对象的指针,使其可访问文档的成员变量,以显示和修改这些变量 视图类的处理操作 处理视图类的OnDraw成员函数,该函数负责提供文档数据 将Windows消息和用户界面对象(如菜单项)与视图类中的消息处理函数连接 实现消息处理函数,以解释用户的输入 根据需要,在派生的视图类中重载CView的其他成员函数 CView(视图)类的派生类? 视图中的绘制 函数OnDraw的作用 多数应用程序的绘制工作都是在视图的OnDraw函数中实现的,因此必须在视图类中重载OnDraw函数,该函数通过调用文档成员函数获取文档数据,并通过调用传给OnDraw的设备文本对象的成员函数来显示数据,其函数代码如下: 文档与视图 void CEx_FloatMenuView::OnDraw(CDC* pDC) { CEx_FloatMenuDoc* pDoc = GetDocument( ); ASSERT_VAL

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档