- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC文档视图结构 一、文档视结构概述 思考:一个排序小程序的编写过程,框架? 应用层、显示层、存储层 ? Observer模式 文档视结构是程序框架中应用层(数据处理层)与数据显示层之间的一种数据交换关系。其主要思想是设计模式中的Observer模式。把数据处理和显示有机分离,合理交互。 在MFC中,则更多代表了一种程序框架模式。 二、基于文档视结构的程序框架构成 文档处理类 ?应用层 负责应用程序的数据处理、管理和存储中心。 视图显示类 ?显示层 从文档类中取数据、显示数据给用户; 接受用户对文档中数据的编辑和修改,并反馈给文档类; 框架管理类 独立界面管理工作,为应用程序的用户界面提供框架窗口,它是应用程序的主窗口,负责管理其包容的窗口。 应用程序类 管理应用程序本身,负责和OS进行交互(获取或发送消息等) 二、基于文档视结构的程序框架构成 文档 class CDocument; 视图 class CView; 框架类 class CFrameWnd; //standard SDI Main Frame class CMDIFrameWnd; //stardard MDI Main Frame class CMDIChildWnd; // standard MDI child Frame 应用程序类 class WinApp 二、基于文档视结构的程序框架构成 SDI CDocument CView CWinApp CMainFrame--派生自CFrameWnd 二、基于文档视结构的程序框架构成 MDI CDocument CView CWinApp CMainFrame--派生自CFrameWnd:主框架类 CChildFrame—派生自CMDIChildWnd:子框架类 三、文档视结构的运行机制(方式) 1)视图类调用GetDocument成员函数获得相关联的文档对象指针,从文档中读取数据。 2)视图把数据显示在屏幕上?用户交互?数据修改。 3)视图将经过修改的数据传递给文档对象,进行数据更新。 四、文档视结构中各类的重要函数 几个重要的函数 CView类的OnInitialUpdate CView类的OnDraw CView类的GetDocument CDocument类的UpdateAllViews CView类的OnUpdate 一个简单的数据分析软件 需求: 1、处理数据源格式 用户提供一个数据文件,文件第一行有两个数据,分别表示数据文件每行有多少个数据(列)以及数据文件共有多少行。 文件从第二行开始表示具体的数据,数据之间以一个空格隔开,数据均在0~255之间。 一个简单的数据分析软件 2、功能要求 能够读入一个数据文件 能够对该数据文件中的数据进行统计分析,前期只需要计算出这些数据的直方图,并在软件中以二维图形的方式显示出来; 能够对每个数据以该数据值为颜色,以该数据行、列为坐标在屏幕上画出该数据点。 一个简单的数据分析软件—关键问题 1、文件读取 文件读取采用C++中的文件流技术进行数据文件中的数据读取。 ifstream dataFile(“1.dat”, ios::in | ios::nocreate); dataFile a; dataFile b; 其他方法 CFile 、CArchive串行化等 一个简单的数据分析软件 2、直方图计算算法 假如有一个有16个数的数列:1 1 1 3 2 1 4 5 3 2 4 5 5 4 3 3 ,这些数都在0~5之间。 数0,1,2,3,4,5在这个数列中出现的次数就是这个数列的统计直方图。 思考: (1)这些数出现的概率呢? (2)计算机如何实现求直方图 Int Data[16] 存数列;hist[5]存0~5每个整数出现的次数。 实现:出现一个数i,就对hist[i]加1 For(int I =0; I 16; I++) Hist[ data[I] ]++; 一个简单的数据分析软件—关键问题 3、结果输出 直方图的显示 以直方图数据中的每个元素为偏移画线即可。 比如:从(100, 100)开始画hist[5]的直方图。 数据文件的图形显示 以数据文件中每个数据的值填充RGB颜色,以数据在数据文件中的行列值为坐标,在屏幕上利用SetPixel函数画点就可以了。 一个简单的数据分析软件—关键问题 5、数据处理位置与时机 数据处理(数据读取、数据分析)在Doc里面 数据显示(直方图、数据绘制)在View里面 问题1:Doc和View之间如何通信? CDocument的UpdateAllViews函数
文档评论(0)