MFC的基本组成及程序模式类型

上传人:hy****d 文档编号:243009873 上传时间:2024-09-13 格式:PPT 页数:33 大小:272.50KB
返回 下载 相关 举报
MFC的基本组成及程序模式类型_第1页
第1页 / 共33页
MFC的基本组成及程序模式类型_第2页
第2页 / 共33页
MFC的基本组成及程序模式类型_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十讲 MFC基础知识,1,10.1 MFC,概述,MFC是用来编写Windows应用程序的C+类集,该类集以层次结构组织起来,其中封装了大部分Windows API函数和Windows控件,它所包含的功能涉及到整个Windows操作系统。,MFC不仅为用户提供了 Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件。,2,MFC还很好地保持了程序的向下兼容性,是用来编写Windows应用程序的C+类集,以层次结构组织,封装了大部分API函数,提供了图形环境下应用程序的框架,提供了创建应用程序的组件,提供了大量的基类供程序员根据不同的应用环境进行扩充,允许在编程过程中自定义和扩展应用程序中的类,较好的移植性,,可移植于众多的平台,MFC,3,MFC1.0 & MS C/C+7.0,应用程序中非图形部分的类,GUI功能的Windows相关类,MFC2.0 & MS VC+1.0,在1.0基础上增添了一些应用程序,MFC3.0 & VC+2.0,增添了对开发32位应用程序的支持,MFC2.0 & MS VC+1.5,添加了ODBC类,并且还支持OLE的性能,MFC4.0,包含了在Win95和N中大多数新的公共控件,和DAO、MAPI,增强了对数据库应用程序的支持,利用DAO类通过编程语言来访问、操纵和管理数据库,对Internet也提供了强有力的支持,MFC4.21,4,MFC5.0增强了对,数据库,和,Internet,的支持,可使用ODBC类和ODBC驱动程序来访问提供ODBC支持的数据库中的数据;可以通过数据访问对象(DAO)类通过编程语言来访问和操纵数据库中的数据并管理数据库、数据库对象与结构。这些支持主要包括以下几个部分:,Win32 Internet API,使,Internet,成为应用程序的一部分并简化了对,Internet,服务的访问,Activex,文档可以显示在整个,Web,浏览器或,OLE,容器的整个客户窗口中,Activex,控件可以用在,Internet,和桌面应用程序中可以使用,CHttpServer,、,CHttpFilter,、,ChttpServerContext,和,CHttpFilterContext,类来建立动态,DLL,,以便为,Web,页面增添功能,5,MFC6.0中引进了新的功能:,提出了活动文档容器来管理不同类型的文档,并通过引入类COleDocObjectItem来加以实现。同时在应用程序向导中也加入了对这一新特性的支持。,加入了对动态HTML技术的支持,通过引入一个新类CHtmlView,使程序员开发的应用程序可以浏览并显示用动态HTML技术开发的HTML文档。类CHtmlView中封装了许多浏览器的特征,包括浏览器在历史记录、书签和安全等方面的特征都被封装进了类CHtmlView。,扩展了对公共控件的支持,如时间控键、IP地址控键和日期控键等。,6,10.2 MFC,类的组织结构及主要的类的简介,7,10.2.1 MFC,类的组织结构,MFC库中的类按层次关系划分类:,(1)根类:CObject,(2)应用程序体系结构类,(3)窗口、对话框和控件类,(4)绘图和打印类,(5)简单数据类型类,(6)数组、列表和映射类,(7)文件和数据库类,(8)Internet和网络工作类,(9)OLE类,(10)调试和异常类,8,10.2.2,根类-,CObjec,MFC中多数类和用户自定义子类的根类,是抽象基类。它提供了许多编程所需的公共操作。,对象的建立,对象的删除,运行时信息,对象诊断输出,串行化支持,应用程序和线程支持类,命令相关类,文档类,文档模板类,视类(体系结构),框架窗口(体系结构),应用程序体系结构类,窗口、对话框和控件类,框架窗口类(窗口),视类(窗口),对话框类,控件条类,绘图和打印类,输出(设备相关)类,绘图工具类,简单数据类型类,数组、列表和映射类,数组类,列表类,映射类,9,文件和数据库类,文件I/O类,DAO类,ODBC类,Internet和网络工作类,LSAPI类,Windows Socket类,Win32 Internet类,OLE类,OLE容器类,OLE服务器类,OLE拖放和数据传输类,OLE普通对话框类,OLE动画类,OLE动画类,OLE控件类,活动文档类,其他文档类,调试和异常类,调试支持类,异常类,10,10.2.3,应用程序体系结构类,1命令相关类:CCmdTarget类,该类是CObject的子类,它是MFC库中所有具有消息映射属性的基类。消息映射规定了当一对象接收到消息命令时,应调用哪一个函数对该消息进行处理,应用程序体系结构类,1.命令相关类,2.窗口应用程序类,3.文档/视类,4.线程基类,编写程序的任务是填充框架,添加应用程序专用的功能,用于构造应用程,序框架的结构,,提供多数应用程,序公用的功能,2线程基类:CWinThread类,所有线程的基类,可直接使用。CWinApp类就是从CWinThread类中派生出来的,11,4文档/视类,文档对象由文档模板对象创建,管理应用程序的数据。视对象表示一个窗口的客户区,显示文档数据并允许用户与之交互,3窗口应用程序类:CWinApp类,每个应用程序有且只有一个应用程序对象,在运行程序中该对象与其它对象相互协调,该对象从CWinApp类中派生出来。CWinApp类封装了初始化、运行、终止应用程序的代码。,12,在CWinApp中定义的部分函数的功能有时也可以通过MFC提供的全局函数来实现,这些全局函数一般都以Afx为前缀。,例如调用AfxMessageBox函数将弹出一个消息框,其功能与CWinApp中的DoMessageBox相同。AfxMessageBox原型如下:,int AfxMessageBox,( LPCTSTR lpszText,UINT nType = MB_OK,UINT nIDHelp = 0,),13,10.2.4,可视对象类,2视类:CView类,该类表示框架窗口的客户区和显示文档数据并接收输入的客户区,其派生类主要有如下几种:,CScrollView,:,具有滚动功能的视的基类,CFormView,:,其布局在对话资源中定义的滚动视,CEditView,:,具有文本编辑、查找、替换和滚动功能的视,1窗口类:CWnd类,Cwnd提供了MFC中所有窗口类的基本功能,是CCmdTarget类的子类,创建Windows窗口要分两步进行,引入构造函数,构造一个CWnd对象,调用Create建立Windows窗口,并将它连到CWnd对象上,14,3菜单类:CMenu类,该类是CObject类的子类,用于管理菜单。它是一个Windows HMenu的封装,提供了与窗口有关的菜单资源建立、修改、跟踪及删除的成员函数。,4对话框类:CDialog类,由于对话框是一个特殊的窗口,所以该类是从CWnd类中派生出来的。对话框子层次结构包括通用对话框类CDialog以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框子类。,15,5控件类,控件子层次结构包括若干类,使用这些类可建立静态文本、命令按钮、位图按钮、列表框、组合框、滚动条、编辑框等。这些直观控件为Windows应用程序提供了各种输入和显示界面。,6控件条类:CControlBar类,控件条子层次结构为工具条、状态条、对话条和分割窗口建立模型。该类是CToolBar、CStatusBar、CDialogBar的基类,负责管理工具条、状态条、对话条的一些成员函数。控件条指的是连接在主窗口框架的顶部或底部的小窗口,16,7绘画对象类:CGdiObject类,图形绘画对象子层次结构以CGdiObject类为根类,可用于建立绘画对象模型,如画笔、刷子、字体、位图、调色板等。,8设备描述表类:CDC类,该类及其子类支持设备描述表对象,是CObject类的子类。CDC类是一个较大的类,包括许多成员函数,如映射函数、绘画工具函数、区域函数等,通过CDC对象的成员函数可以完成所有的绘画工作,17,10.2.5,通用类,此类提供了许多通用服务,例如文件I/O、诊断和异常处理等,此外还包括如数组和列表等存放数据集的类,1文件类:CFile类和CArchive类,用以编写输入输出处理函数,2异常类:CException类,是所有异常情况的基类。不能直接建立CException对象,只能建立派生类的对象,用派生类来捕获指定的异常情况,3模板收集类,这些类可以将多种对象存放到数组、列表和“ 映射”中。但这些收集类是模板,它们的参数确定了存放在集合中的对象类型。,18,CException的派生类如下。,CNotSupportedException:不支持服务异常,CMemoryException:内存异常,C:文件异常,CResourceException:资源异常,COleException:OLE异常,CArchiveException:档案异常,CDaoException:基于DAO的数据库类异常,CDBException:数据库类异常,CUserException:终端用户操作异常,19,产生异常的原因描述将储存在异常对象的m_cause数据成员中。,例如CArchiveException 类的m_cause数据成员的可能值如下:,badClass:不能读错误对象类型中的内容,badIndex:无效文件格式,badSchema:无效对象版本,endOfFile:到达文件尾,Generic:不明异常,None:无异常,readOnly:试图向只读文件进行写操作,writeOnly:试图向只写文件进行读操作,20,10.2.6 OLE,类,对象连接与嵌入子层次结构为支持OLE提供了9个类,普通类,COleDocuemnt,COleItem,COleException,客户类,COleClientDoc,COleClientItem,服务器类,COleServer,COleTemplate,COleServerDoc,COleServerItem,21,10.2.7 ODBC,数据库类,数据库类,CDatabase:封装对数据源的连接,通过此连接应用程序可在该数据源上进行操作,CRecordset:封装了从数据源选出的记录,这些类面向ODBC,且封装了ODBC API,22,CRecordView:由CFormView派生,该类将记录集对象连接到显示当前记录的字段值的一个表单视图来简化操作。,CFieldExchange:提供上下文信息,支持在字段数据成员、记录对象的参数数据成员及数据源上的对应列表之间进行数据交换,CLongBinary:封装一存储句柄,用于存储二进制的对象,例如位图等,CDBException:记录数据存取处理过程中的失败产生的异常,常见数据库类,23,10.3MFC 中全局函数和全局变量,以,Afx,为前缀的函数(数据库类函数和,DDX,函数除外)和变量,在目前的版本中,都表示全局函数或全局变量。,AfxAbort:无条件终止一个应用程序,AfxBeginThread:创建一个新线程并执行它,AfxEndThread:终止当前正在执行的线程,AfxFormatString:格式化字符串,AfxMessageBox:显示一个Windows消息框,Afx,GetApp:返回当前应用程序对象的指针,AfxGetInstanceHandle:返回标识当前应用程序对象的句柄,AfxRegisterWndClass:注册用于创建Windows窗口的窗口类,常见全局函数,24,10.4,应用程序向导的操作步骤,在Visual studio 6中主窗口的左上角主菜单上找到”File”,(如果是中文显示的开发环境,则是”文件”),单击鼠标左键或用键盘操作在按住ALT键的情况下敲击F键,则出现下页所表示的Appwizard 对话框,引导编程开发人员创建所需要的应用程序类型.,在本学期的学习中,只要求掌握三种应用程序开发类型:,(1)Win32 Console Application类型,编写纯粹的C+或C语言基础语法所对应的字符窗口型程序;,(2)Win32 Application类型,编写Windows API程序;,(3)MFC AppWizardexe类型,基于MFC的面向对象风格的Windows程序.其中有三个子类型,只要求掌握其中的对话框风格的程序(Dialog-based)及单文档界面风格的程序(single document)类型,重点掌握文档视图体系结构的工作原理.,25,26,27,28,29,30,31,32,33,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!