1 / 19
文档名称:

第7章 文档和视图.ppt

格式:ppt   页数:19
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第7章 文档和视图.ppt

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

第7章 文档和视图.ppt

文档介绍

文档介绍:第七章文档和视图
本章导读
理解文档类和视图类二者间的关系。
掌握在视图类中利用GetDocument函数获得文档类的指针,并借助此指针更新文档类中的数据的方法。
掌握在文档类中当文档数据发生了改变时利用UpDateAllViews()通知所有的视图对象的方法,通过调用文档类的UpDateAllViews()函数去调用每个视图的成员函数OnUpdate()函数对相应的视图进行数据更新。
掌握视图类的OnDraw函数的调用机理。
了解SDI文档序列化的工作原理和实现方法。
1
文档类和视图类间的关系
视图和用户的文档间是紧密相连的,文档类用于管理应用程序的数据,包括对数据读取、存储和修改。视图类用于显示文档并管理与用户的交互。这种文档和视图的结合,称为“文档/视图”结构机制。
定义和操纵数据的代码在文档类中实现;显示数据、解释用户输入的代码在视图类中实现。
一个SDI(单文档界面)应用程序同一时刻只能打开一个文档。
在一个MDI(多文档界面)应用程序中,可以有几种不同类型的文档,每个文档可以有一个或多个视图。同一时刻可以打开几个文档,打开的文档经常使用适合该文档的工具栏和菜单。
2
常用的成员函数
在SDI(单文档界面)应用程序中,文档类的基类是CDocument,它可以有一个或多个视图类,而所有这些视图类的基类都是CView,任何一个应用程序的文档类和视图类都是由这两个类派生出来的。
CView类的GetDocument()函数
一个视图对象只有一个与之相联系的文档对象,它所包含的GetDocument()函数可以实现在视图中得到与之相联系的文档。CView类及其派生类只需调用GetDocument()函数就可以取得CDocument类的对象指针,从而用此指针来访问文档类中的的所有可见的数据。
3
GetDocument函数的原型为:
CDocument* CView::GetDocument( ) const;
另外,CDocument类中的GetNextView()函数可以在文档类中获得视图类的指针
CDocument类先调用GetFirstViewPosition()函数得到所有有关该文档类对象的第一个视图,再用该函数的返回结果调用GetNextView()函数,即可得到CView类的指针,从而借此访问CView类的数据。
常用的成员函数
4
这两个函数的原型为:
virtual POSITION CDocument::GetFirstViewPosition( ) const;
virtual CView* CDocument::GetNextView( POSITION& rPosition ) const;
如:
void CMyDoc::OnRepaintAllViews()
{   POSITION pos = GetFirstViewPosition();
  while (pos != NULL)
  { CView* pView = GetNextView(pos);
     pView->UpdateWindow();  }  
}
常用的成员函数
5
CDocument 类的UpDateAllViews()函数
通过文档类的UpDateAllViews()函数调用每个视图的成员函数OnUpdate()函数对相应的视图进行数据更新。
UpDateAllViews()函数的原型为:
void UpDateAllViews(CView*pSender,LPARAM lHint=0L,CObject*pHint=NULL);
常用的成员函数
6
CView类的 OnUpdate()函数
当应用程序调用了CDocument 类的UpDateAllViews()函数时,应用程序框架就会相应地调用该函数。通常在派生视图类中的OnUpdate()函数要对文档进行访问,读取文档的数据,然后再对视图的数据成员或控制进行更新。
OnUpdate()函数原型如下:
virtual void OnUpdate(CView*pSender,LPARAM lHint,CObject* pHint);
函数中参数的说明同函数UpdateAllViews()。
利用OnUpdate()函数,可以使视图的某一部分无效,以便触发视图类的OnDraw()函数。在默认情况即lHint=0,pHint=NULL时,函数OnUpdate()使视图的整个客户区无效;如果想要视图的某一部分无效,则需要定义相关的提示(hint)参数给出准确的无效区域。
用OnUpdate()函数来更新视图的滚动范围。
常用

最近更新

2024年六安职业技术学院单招综合素质考试模拟.. 41页

2024年六盘水职业技术学院单招职业适应性测试.. 39页

2026年体育实习报告总结800字 30页

2024年兰州石化职业技术大学单招职业技能考试.. 39页

2024年兰州科技职业学院单招综合素质考试题库.. 40页

2024年兰州职业技术学院单招职业技能考试模拟.. 41页

2024年兰州资源环境职业技术大学单招综合素质.. 40页

2024年兰考三农职业学院单招职业倾向性考试题.. 40页

2024年共青科技职业学院单招职业技能考试题库.. 40页

2024年冀中职业学院单招综合素质考试模拟测试.. 40页

2024年内江职业技术学院单招职业适应性考试模.. 40页

绿色染色对针织品染色均匀性的影响研究 38页

2026年低碳环保小学生演讲稿 7页

2024年内蒙古兴安盟单招职业适应性考试题库含.. 39页

2024年内蒙古化工职业学院单招职业技能考试题.. 42页

2024年内蒙古呼伦贝尔市单招职业倾向性测试模.. 41页

2024年内蒙古机电职业技术学院单招职业倾向性.. 41页

2024年内蒙古民族幼儿师范高等专科学校单招职.. 40页

2024年内蒙古科技职业学院单招综合素质考试题.. 40页

2026年传统节日春节作文650字 11页

2024年包头轻工职业技术学院单招职业技能测试.. 42页

2024年包头钢铁职业技术学院单招职业适应性测.. 39页

风险评估与支付成本预测模型 38页

2024年北京社会管理职业学院单招职业技能考试.. 40页

2024年北海康养职业学院单招综合素质考试模拟.. 39页

2024年华东政法大学单招职业适应性测试题库必.. 40页

2026年传奇 张爱玲经典语录 5页

2024年南京旅游职业学院单招职业倾向性考试题.. 39页

小学数学六年级下册《鸽巢问题》作业设计 9页

国开《建筑力学》期末机考答案 15页