您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Windows程序设计教案第4章
1第4章MFC应用程序设计的基础知识2利用WindowsAPI函数进行编程时,大量的代码需要程序员自己编写,编程的工作量较大。通常利用MFC(MicrosoftFoundationClasses)和向导(Wizard)来编写Windows应用程序。(P.14)首先使用AppWizard来生成Windows应用程序的基本框架然后用ClassWizard来建立应用程序的类、消息处理、数据处理函数或定义控件的属性、事件和方法最后把各应用程序所要求的功能添加到类中31MFC概述MFC1.0&MSC/C++7.0应用程序中非图形部分的类GUI功能的Windows相关类MFC2.0&MSVC++1.0在1.0基础上增添了一些应用程序MFC3.0&VC++2.0增添了对开发32位应用程序的支持MFC2.0&MSVC++1.5添加了ODBC类,并且还支持OLE的性能MFC4.0包含了在Win95和NT中大多数新的公共控件和DAO、MAPI增强了对数据库应用程序的支持利用DAO类通过编程语言来访问、操纵和管理数据库对Internet也提供了强有力的支持MFC4.214MFC还很好地保持了程序的向下兼容性是用来编写Windows应用程序的C++类集以层次结构组织封装了大部分API函数提供了图形环境下应用程序的框架提供了创建应用程序的组件提供了大量的基类供程序员根据不同的应用环境进行扩充允许在编程过程中自定义和扩展应用程序中的类较好的移植性,可移植于众多的平台MFC52MFC类库的组织结构及主要的类2.1MFC类库的组织结构(教材P.226)67根类:CObject。MFC中多数类和用户自定义子类的根类,是抽象基类。它提供了许多编程所需的公共操作。对象的建立对象的删除运行时信息对象诊断输出串行化支持应用程序和线程支持类命令相关类文档类文档模板类视类(体系结构)框架窗口(体系结构)应用程序体系结构类窗口、对话框和控件类框架窗口类(窗口)视类(窗口)对话框类控件条类绘图和打印类输出(设备相关)类绘图工具类简单数据类型类数组、列表和映射类数组类列表类映射类8文件和数据库类文件I/O类DAO类ODBC类Internet和网络工作类ISAPI类WindowsSocket类Win32Internet类OLE类OLE容器类OLE服务器类OLE拖放和数据传输类OLE普通对话框类OLE动画类OLE控件类活动文档类其他文档类调试和异常类调试支持类异常类92.2应用程序体系结构类1.命令相关类:CCmdTarget类该类是CObject的子类,它是MFC库中所有具有消息映射属性的基类。消息映射规定了当一对象接收到消息命令时,应调用哪一个函数对该消息进行处理2.窗口应用程序类:CWinApp类每个应用程序有且只有一个应用程序对象,在运行程序中该对象与其它对象相互协调,该对象从CWinApp类中派生出来。CWinApp类封装了初始化、运行、终止应用程序的代码。应用程序体系结构类1.命令相关类2.窗口应用程序类3.文档/视图类4.线程基类编写程序的任务是填充框架,添加应用程序专用的功能用于构造应用程序框架的结构,提供多数应用程序公用的功能103.文档/视图类文档对象由文档模板对象创建,管理应用程序的数据。视图对象表示一个窗口的客户区,显示文档数据并允许用户与之交互4.线程基类:CWinThread类所有线程的基类,可直接使用。CWinApp类就是从CWinThread类中派生出来的112.视图类:CView类该类表示框架窗口的客户区和显示文档数据并接收输入的客户区,其派生类主要有如下几种:CScrollView:具有滚动功能的视的基类CFormView:其布局在对话资源中定义的滚动视CEditView:具有文本编辑、查找、替换和滚动功能的视2.3可视对象类1.窗口类:CWnd类Cwnd提供了MFC中所有窗口类的基本功能,是CCmdTarget类的子类创建Windows窗口要分两步进行引入构造函数,构造一个CWnd对象调用Create建立Windows窗口,并将它连到CWnd对象上123.菜单类:CMenu类该类是CObject类的子类,用于管理菜单。它是一个WindowsHMenu的封装,提供了与窗口有关的菜单资源建立、修改、跟踪及删除的成员函数。4.对话框类:CDialog类由于对话框是一个特殊的窗口,所以该类是从CWnd类中派生出来的。对话框子层次结构包括通用对话框类CDialog以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框子类。135.控件类控件子层次结构包括若干类,使用这些类可建立静态文本、命令按钮、位图按钮、列表框、组合框、滚动条、编辑框等。这些直观控件为Windows应用程序提供了各种输入和显示界面。6.控件条类:CControlBar类控件条子层次结构为工具条、状态条、对话条和分割窗口建立模型。该类是CToolBar、CStatusBar、CDialogBar的基类,负责管理工具条、状态条、对话条的一些成员函数。控件条指的是连接在主窗口框架的顶部或底部的小窗口147.GDI对象类:CGdiObject类GDI对象子层次结构以CGdiObject类为根类,可用于建立绘画对象模型,如画笔、刷子、字体、位图、调色板等。8.设备环境类:CDC类该类及其子类支持设备环境对象,是CObject类的子类。CDC类是一个较大的类,包括许多成员函数,如映射函数、绘画工具函数、区域函数等,通过CDC对象的成员函数可以完成所有的绘画工作152.4通用类此类提供了许多通用服务,例如文件I/O、诊断和异常处理等,此外还包括如数组和列表等存放数据集的类1.文件类:CFile类和CArchive类用以编写输入输出处理函数2.异常类:CException类是所有异常情况的基类。不能直接建立CException对象,只能建立派生类的对象,用派生类来捕获指定的异常情况3.模板收集类这些类可以将多种对象存放到数组、列表和“映射”中。但这些收集类是模板,它们的参数确定了存放在集合中的对象类型。162.5OLE类2.6ODBC数据库类开放数据库连接子层次结构提供了一些类来支持ODBC特征,即通过这些类可开发数据库应用程序来访问多个数据库文件对象连接与嵌入子层次结构为支持OLE提供了9个类普通类COleDocuemntCOleItemCOleException客户类COleClientDocCOleClientItem服务器类COleServerCOleTemplateCOleServerDocCOleServerItem173MFC中全局函数以Afx开头的函数除数据库类函数和DDX(DialogDataExchange)函数外,在目前的版本中,都表示是一个全局函数。函数名功能简介AfxAbort无条件终止一个应用程序AfxBeginThread创建一个新线程并执行它AfxEndThread终止当前正在执行的线程AfxFormatString格式化字符串AfxMessageBox显示一个Windows消息框AfxGetApp返回当前应用程序对象的指针AfxGetInstanceHandle返回标识当前应用程序对象的句柄AfxRegisterWndClass登记用于创建Windows窗口的窗口类184.文档/视图结构MFC通过文档/视图结构把对数据的管理和显示进行了分工,其中,文档负责数据的存储和管理,视图负责数据的显示。在文档/视图结构中,文档是一个内存中的概念,它负责存储和管理应用程序在内存中的所有数据。即,它首先采用某种数据结构来存储应用程序中所有的数据,构成了应用程序所使用的数据单元;此外,它提供了管理和维护数据的手段以及存盘、读取的手段。19视图是一个用户界面的概念,它构成了数据的用户窗口,为用户提供了文档中的数据的可视化显示,它把文档的部分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交互的界口,它可以把用户的输入转化为对文档中数据的操作。每个文档都会有一个或多个视图显示,这些视图可以互不相同。比如,在Excel电子表格中,我们可以将数据以表格方式显示,也可以将数据以图表方式显示。一个视图既可以输出到窗口中,也可以输出到打印机上。20内存用户界面21MFC中,文档和视图分别用文档类和视图类来表示。每一个支持文档/视图结构的应用程序都有自己的文档类和视图类,二者都可以获得对方的指针从而进行访问。其中,文档类是从CDocument派生的,视图类是从CView或CView的派生类派生的。22文档/视图结构的工作机制视图类通过GetDocument()成员函数获得指向文档类对象的指针通过该指针调用文档类的成员函数来从文档中读取数据视图把数据显示于计算机屏幕上用户通过与视图的交互来查看数据并对数据进行修改视图通过调用文档类的成员函数将经过修改的数据传递给文档对象文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如磁盘文件)中235.应用程序向导及其应用步骤(教材P.228)应用程序向导为程序员提供了一个基于MFC的应用程序框架,程序员可以在此基础上添加实现特定功能的代码即可242526272829303132336.第一个MFC程序——学习向导产生的类、菜单栏、工具栏和消息映射6.1向导产生的4个主要类①应用程序类(从CWinApp派生)重要成员函数:InitInstance();ExitInstance();34②主框架类CMainFrame(从CFrameWnd派生)重要成员函数:OnCreate();PreCreateWindow();③文档类(从CDocument派生)重要成员函数:Serialize()注意:关于Serialize(),有4种类可以使用这个函数:1.CDocument2.CObArray3.CObList4.派生自CObject的自定义类(需添加DECLARE_SERIAL(CXXX)和IMPLEMENT_SERIAL(CXXX,CObject,1)两个宏)。35④视图类(从CView或其派生类派生)重要成员函数:OnDraw()注意:OnDraw()函数什么时候被调用:1.客户区变得“无效”(即系统发出WM_PAINT消息)的时候,由框架自动调用此函数。2.程序员在其它函数中需要重新绘制客户区的时候,可调用Invalidate()函数,这个函数强制使客户区无效,所以可发生WM_PAINT消息,导致OnDraw()被调用。6.2添加菜单和工具栏按钮366.3认识MFC的消息映射机制:消息映射的含义就是指定哪一个消息用哪一个函数去处理。•头文件中的DECLARE_MESSAGE_MAP()•源文件中的BEGIN_MESSAGE_MAP(CXXXView,CView)和END_MESSAGE_MAP(),这两个宏之间的语句就是消息映射,其中每一条都规定了哪一个消息用哪一个函数去处理。
本文标题:Windows程序设计教案第4章
链接地址:https://www.777doc.com/doc-2856449 .html