




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第4章章 MFC应用程序设计的基础知识应用程序设计的基础知识2 利用利用Windows APIWindows API函数进行编程时,大量的代码需要程序函数进行编程时,大量的代码需要程序员自己编写,编程的工作量较大。员自己编写,编程的工作量较大。 通常利用通常利用MFC(Microsoft Foundation Classes)MFC(Microsoft Foundation Classes)和向导和向导(Wizard)(Wizard)来编写来编写WindowsWindows应用程序。(应用程序。(P.14P.14)首先使用首先使用AppWizardAppWizard来生成来生成Window
2、sWindows应用程序的基本框架应用程序的基本框架然后用然后用ClassWizardClassWizard来建立应用程序的类、消息处理、数据处理函数来建立应用程序的类、消息处理、数据处理函数或定义控件的属性、事件和方法或定义控件的属性、事件和方法最后把各应用程序所要求的功能添加到类中最后把各应用程序所要求的功能添加到类中31 MFC概述概述MFC1.0 & MS C/C+7.0MFC1.0 & MS C/C+7.0应用程序中非图形部分的类应用程序中非图形部分的类GUIGUI功能的功能的WindowsWindows相关类相关类MFC2.0 & MS VC+1.0MFC2
3、.0 & MS VC+1.0在在1.01.0基础上增添了一些应用程序基础上增添了一些应用程序MFC3.0 & VC+2.0MFC3.0 & VC+2.0增添了对开发增添了对开发3232位应用程序的支持位应用程序的支持MFC2.0 & MS VC+1.5MFC2.0 & MS VC+1.5添加了添加了ODBCODBC类,并且还支持类,并且还支持OLEOLE的性能的性能MFC4.0MFC4.0包含了在包含了在Win95Win95和和NTNT中大多数新的公共控件和中大多数新的公共控件和DAODAO、MAPIMAPI增强了对数据库应用程序的支持增强了对数据库应用
4、程序的支持利用利用DAODAO类通过编程语言来访问、操纵和管理数据库类通过编程语言来访问、操纵和管理数据库对对InternetInternet也提供了强有力的支持也提供了强有力的支持MFC4.21MFC4.214MFCMFC还很好地保持了程序的向下兼容性还很好地保持了程序的向下兼容性是用来编是用来编写写WindowsWindows应用程序应用程序的的C+C+类集类集以层次结构组织以层次结构组织封装了大部分封装了大部分APIAPI函数函数提供了图形环境下应用程序的框架提供了图形环境下应用程序的框架提供了创建应用程序的组件提供了创建应用程序的组件提供了大量的基类供程序员根据不同的应用环境进行扩充提
5、供了大量的基类供程序员根据不同的应用环境进行扩充允许在编程过程中自定义和扩展应用程序中的类允许在编程过程中自定义和扩展应用程序中的类较好的移植性,较好的移植性,可移植于众多的平台可移植于众多的平台MFCMFC52 MFC类库的组织结构及主要的类类库的组织结构及主要的类2.1 MFC类库的组织结构类库的组织结构(教材P.226)67根类:根类:CObjectCObject。MFCMFC中中多数类和用户自定义子类多数类和用户自定义子类的根类,是抽象基类。它的根类,是抽象基类。它提供了许多编程所需的公提供了许多编程所需的公共操作。共操作。对象的建立对象的建立对象的删除对象的删除运行时信息运行时信息对
6、象诊断输出对象诊断输出串行化支持串行化支持应用程序和线程支持类应用程序和线程支持类命令相关类命令相关类文档类文档类文档模板类文档模板类视类视类( (体系结构体系结构) )框架窗口框架窗口( (体系结构体系结构) )应用程序体系应用程序体系结构类结构类窗口、对话窗口、对话框和控件类框和控件类框架窗口类(窗口)框架窗口类(窗口)视类(窗口)视类(窗口)对话框类对话框类控件条类控件条类绘图绘图和打和打印类印类输出输出( (设备相关设备相关) )类类绘图工具类绘图工具类简单数据类型类简单数据类型类数组、列表和映射类数组、列表和映射类数组类数组类列表类列表类映射类映射类8文件和数据库类文件和数据库类文件
7、文件I/OI/O类类DAODAO类类ODBCODBC类类InternetInternet和网络工作类和网络工作类ISAPIISAPI类类Windows SocketWindows Socket类类Win32 InternetWin32 Internet类类OLEOLE类类OLEOLE容器类容器类OLEOLE服务器类服务器类OLEOLE拖放和数据传输类拖放和数据传输类OLEOLE普通对话框类普通对话框类OLEOLE动画类动画类OLEOLE控件类控件类活动文档类活动文档类其他文档类其他文档类调试和异常类调试和异常类调试支持类调试支持类异常类异常类93 3 MFC中的全局函数中的全局函数 以Afx开
8、头的函数除数据库类函数和DDX(Dialog Data Exchange)函数外,在目前的版本中,都表示是一个全局函数。函函数数名名功功能能简简介介AfxAbort无无条条件件终终止止一一个个应应用用程程序序AfxBeginThread创创建建一一个个新新线线程程并并执执行行它它AfxEndThread终终止止当当前前正正在在执执行行的的线线程程AfxFormatString格格式式化化字字符符串串AfxMessageBox显显示示一一个个Windows消消息息框框AfxGetApp返返回回当当前前应应用用程程序序对对象象的的指指针针AfxGetInstanceHandle返返回回标标识识当当
9、前前应应用用程程序序对对象象的的句句柄柄AfxRegisterWndClass登登记记用用于于创创建建Windows窗窗口口的的窗窗口口类类104.文档文档/视图结构视图结构 MFC通过文档/视图结构把对数据的管理和显示进行了分工,其中,文档负责数据的存储和管理,视图负责数据的显示。 在文档/视图结构中,文档是一个内存中的概念,它负责存储和管理应用程序在内存中的所有数据。即,它首先采用某种数据结构来存储应用程序中所有的数据,构成了应用程序所使用的数据单元;此外,它提供了管理和维护数据的手段以及存盘、读取的手段。11 视图是一个用户界面的概念,它构成了数据的用户窗口,为用户提供了文档中的数据的可
10、视化显示,它把文档的部分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交互的界口,它可以把用户的输入转化为对文档中数据的操作。 每个文档都会有一个或多个视图显示,这些视图可以互不相同。比如,在Excel电子表格中,我们可以将数据以表格方式显示,也可以将数据以图表方式显示。一个视图既可以输出到窗口中,也可以输出到打印机上。12内存内存用户界面用户界面13 MFC中,文档和视图分别用文档类和视图类来表示。每一个支持文档/视图结构的应用程序都有自己的文档类和视图类,二者都可以获得对方的指针从而进行访问。其中,文档类是从CDocument派生的,视图类是从CView或CView的派生
11、类派生的。14文档文档/ /视图结构的工作机制视图结构的工作机制视图类通过视图类通过GetDocument()GetDocument()成员函数获得指向文档类成员函数获得指向文档类对象的指针对象的指针通过该指针获得文档通过该指针获得文档类中的数据类中的数据视图类把数据显示视图类把数据显示于客户区中于客户区中用户通过与客户区用户通过与客户区的交互来对数据进的交互来对数据进行修改行修改视图通过调用文档类的成视图通过调用文档类的成员函数将经过修改的数据员函数将经过修改的数据保存回文档类对象保存回文档类对象如果用户发出保存命令,则文档对象将如果用户发出保存命令,则文档对象将修改过的数据保存到永久介质修
12、改过的数据保存到永久介质( (如磁盘如磁盘文件文件) )中中155.应用程序向导及其应用步骤(教材应用程序向导及其应用步骤(教材P.228) 从第2章可以看到,不管Windows应用程序完成何种功能,它们的框架是固定的,都必须经历注册窗口类、创建窗口、更新窗口客户区、建立消息循环这些套路。如果能把这些固定的东西简化,依靠开发工具自动为我们生成,就可以大大减轻程序员的负担,使他们能集中注意力在程序的逻辑上。16应用程序向导为程序员提供了应用程序向导为程序员提供了一个基于一个基于MFCMFC的的应用程序框架应用程序框架,程序员可以在此基础上添加实程序员可以在此基础上添加实现特定功能的代码即可现特定
13、功能的代码即可171819202122232425266.第一个第一个MFC程序程序 学习向导产生的类学习向导产生的类6.1 向导产生的4个主要类 应用程序类(从CWinApp派生) 封装与应用程序相关的操作。重要成员函数: InitInstance():当应用程序启动时由MFC自动调用,完成一些应用程序的初始化操作。 ExitInstance():当应用程序退出时由MFC自动调用,完成一些清除工作。27 主框架类CMainFrame(从CFrameWnd派生) 封装与窗口框架相关的操作。重要成员函数: OnCreate():这个函数就是WM_CREATE消息的处理函数,当窗口刚被创建时由MF
14、C自动调用,完成主框架的创建(包括工具栏、状态栏等的创建)。由于这个类是主框架类,所以这个函数不进行客户区的任何创建工作。 PreCreateWindow():在上一个函数被调用前,由MFC自动调用,通过修改一个CREATESTRUCT结构体变量来完成窗口创建时的一些风格定制。这是一个虚函数,我们可以重载它,然后修改CREATESTRUCT结构体变量来达到修改窗口风格的目的。28 另外,如果应用程序是多文档界面的,那么还有一个CChildFrame类,专门负责管理各个子窗口的框架。具体内容和调用时机与CMainFrame类相似。29 文档类(从CDocument派生) 封装文档/视图结构中与文
15、档相关的操作,我们可以添加适合的变量或数据结构来存储和管理应用程序所需的数据。重要成员函数: OnNewDocument():虚函数,当用户点击“新建”菜单或工具栏按扭时由MFC自动调用。我们可以重载它,然后实现自己的新建文档时的初始化工作。 Serialize():虚函数,当用户点击“打开”或“保存”或“另存为”菜单或工具栏按扭时由MFC自动调用。我们一定要重载它,才能够实现自己的打开和保存工作。 30注意: 关于Serialize(),只有4种类可以使用这个函数: CDocument及其派生类 CObArray依次调用每个元素的Serialize() CObList 依次调用每个元素的Se
16、rialize() 派生自CObject的自定义类(需在头文件中添加DECLARE_SERIAL(CXXX)宏和在源文件中添加IMPLEMENT_SERIAL(CXXX,CObject,1) 宏)。思考: 一程序中有多个对象,并且需要将这些对象中的数据存盘。那么在文档类中应怎样进行设计?31 视图类(从CView或其派生类派生) 封装文档/视图结构中与视图相关的操作,完成窗口客户区中的内容的绘制工作。重要成员函数: OnInitialUpdate():虚函数,类似于第2章的API函数UpdateWindow()。当窗口刚显示在屏幕上时由MFC自动调用,该函数要发出一条WM_PAINT消息,这是
17、应用程序第一次发出该消息,作用是完成客户区的初始显示工作。我们可以重载它,实现客户区的特定初始显示。 OnDraw():虚函数,当程序收到WM_PAINT消息时由MFC自动调用,专门进行客户区的重绘。如果我们希望程序能响应WM_PAINT消息,就一定要重载它。32注意: OnDraw()函数只在客户区变得“无效”(即发出WM_PAINT消息)的时候,由MFC自动调用。具体的,有以下一些调用时机: 窗口刚显示出来时 窗口最小化后重新恢复显示时 窗口被其他窗口遮住全部或一部分后重新显示时 窗口被拖动时 当程序中调用CWnd:Invalidate()函数或Win32 API RedrawWindow()强
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术服务企业风险管理与内部控制考核试卷
- 4-5负边沿JKFF电子课件教学版
- 生态保护与海洋资源可持续利用考核试卷
- 纳米技术在仪器制造中的应用前景考核试卷
- 亲情600字初三语文作文
- 纺织品批发商国际市场拓展考核试卷
- 线上线下融合的文具用品零售模式考核试卷
- 机床装备智能制造装备产业链构建与优化考核试卷
- 矿山机械加工工艺参数优化考核试卷
- 硅冶炼废渣、废水的处理与利用考核试卷
- 江苏省淮安市2025届高三上学期第一次调研测试化学
- 2025中考复习必背初中英语单词1600打印版(上)
- 2025年河南省机场集团有限公司招聘笔试参考题库含答案解析
- 《照明培训手册》课件
- 智能传感器销售合同
- 临床合理用药指导
- 口腔科院感知识培训课件
- 2025年四川省成都市住房和城乡建设局所属10家事业单位招聘45人历年高频重点提升(共500题)附带答案详解
- 装配式住宅建筑施工要点及质量管控措施
- 城市更新项目投标书
- 2025年山东潍坊市再担保集团股份限公司社会招聘11人管理单位笔试遴选500模拟题附带答案详解
评论
0/150
提交评论