【教学课件】第3章MFC应用程序设计基础.ppt

上传人:小飞机 文档编号:5658501 上传时间:2023-08-06 格式:PPT 页数:22 大小:479.47KB
返回 下载 相关 举报
【教学课件】第3章MFC应用程序设计基础.ppt_第1页
第1页 / 共22页
【教学课件】第3章MFC应用程序设计基础.ppt_第2页
第2页 / 共22页
【教学课件】第3章MFC应用程序设计基础.ppt_第3页
第3页 / 共22页
【教学课件】第3章MFC应用程序设计基础.ppt_第4页
第4页 / 共22页
【教学课件】第3章MFC应用程序设计基础.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《【教学课件】第3章MFC应用程序设计基础.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章MFC应用程序设计基础.ppt(22页珍藏版)》请在三一办公上搜索。

1、第3章 MFC应用程序设计基础,保定职业技术学院,第3章 MFC应用程序设计基础,3.1 MFC应用程序向导3.2 MFC类的层次结构3.3 MFC应用程序框架3.4 MFC的消息映像3.5应用程序的调试3.6专题讨论与作业设计,3.1 MFC应用程序向导,创建基于对话框的应用程序 创建单文档应用程序 应用程序的简单分析 利用MFC应用程序向导建立的应用程序,用户没有编写一行代码,直接就可以编译运行。向导到底做了一些什么工作,生成了什么文件?,3.1 MFC应用程序向导,mych3_1.ncb/解决方案数据文件mych3_1.sln/解决方案文件mych3_1.vcproj/VC+工程文件Re

2、adMe.txt/ReadMe文件mych3_1.h/应用程序头文件,定义了Cmych3_1App类mych3_1.cpp/应用程序源文件mych3_1Dlg.h/应用程序对话框头文件mych3_1Dlg.cpp/应用程序对话框源文件stdafx.h/预编译头文件stdafx.cpp/预编译文件mych3_1.APS/项目的APS文件mych3_1.rc/资源文件Debug/调试目录,debug版本的exe文件等在此目录生成Resource.h/资源头文件res/资源文件夹resmych3_1.ico/这是一个图标文件,用作应用程序的图标。,3.2 MFC类的层次结构,什么是MFC MFC是用

3、来编写Windows应用程序的VC+类集,该类集以层次结构组织起来,其中封装了大部分Windows API函数,它所包含的功能涉及到整个Windows操作系统。MFC不仅为用户提供了Windows图形环境下的应用程序框架,而且还提供了创建应用程序的组件。,3.2 MFC类的层次结构,3.2 MFC类的层次结构,应用程序主要的类 1.根类CObject类是MFC的抽象基类,是MFC中多数类的根类,它为程序员提供了许多编程所需的公共操作如对象的建立和删除、串行化支持、对象诊断输出、运行时信息及集合类的兼容等。从根类派生的类有三大特性,即动态性、诊断性和持续性。动态性是指程序在运行时,可以获得对象的

4、大小和类名,还可以动态创建类的实例,也就是通过CObject类提供的IsKindOf()和GetRuntimeClass()两个成员函数检索对象的类名及其它信息。IsKindOf()测试对象与相关类之间的关系,GetRuntimeClass()用于返回CRuntimeClass类对象的结构,包含类运行时的类名、基类名等信息。,3.2 MFC类的层次结构,应用程序主要的类 1.根类诊断性是指提供了把对象状态转储给调试机制(通常是输出窗口)的能力,它通过成员函数AssertValid()和Dump()以及CDumpContext类,解决了向调试窗口输出对象信息的问题。持续性是对象本身能够将对象数据

5、保存到存储介质中,或反过来从存储介质上读取数据并建立对象。它主要是通过Serialize和IsSerializable两个成员函数实现的。,3.2 MFC类的层次结构,2.应用程序体系结构类应用程序体系结构类用于构建应用程序的框架,提供大多数应用程序公用的功能。通过使用MFC应用程序向导,就可以建立应用程序的框架结构,用户编写程序的任务只是在应用程序框架内添加处理代码。应用程序体系结构主要有命令目标类、窗口应用程序类、文档/视图类和线程基类等。,3.2 MFC类的层次结构,3.可视对象类(1)窗口类(CWnd)(2)视图类(CView)(3)菜单类(CMenu)(4)对话框类(CDialog)

6、(5)控件类(6)控件条类(CControlBar)(7)设备描述表类(CDC)(8)图形设备接口对象类(CGdiObject),3.2 MFC类的层次结构,4.通用类CFile类:提供访问二进制磁盘文件的接口类。CArchive类:与CFile类对象一起通过串行化实现对象的永久存储。CException类:该类是所有异常的基类,可以用派生类来捕获指定的异常。CArray类:将元素存储在数组中。CList类:将元素存储在链表中。,3.2 MFC类的层次结构,5.支持数据库开发的类ODBC数据库支持类提供了一些类来支持数据库开发,主要有CDataBase类、CRecordset类、CRecord

7、View类等。DAO数据库支持类主要有CDaoDataBase类、CDaoQueryDef类、CDaoRecordset类、CDaoTableDef类、CDaoWorkspace类等。,3.2 MFC类的层次结构,6.简单数据类型的封装类这些类是没有继承关系的,它们用来封装Widnows常用的一些简单数据结构。CRect矩形类:封装Windows的RECT结构。CSize尺寸类:封装Windows的SIZE结构。CTime时间类:用来处理绝对时间。CString字符串类:提供对字符串的操作。,3.3 MFC应用程序框架,MFC应用程序框架的基本类,3.3 MFC应用程序框架,MFC应用程序启动

8、过程(1)创建应用程序对象(2)Windows调用WinMain函数(3)WinMain函数调用InitInstance成员函数(4)WinMain函数调用Run函数,3.3 MFC应用程序框架,应用程序的启动过程,3.4 MFC的消息映像,1.什么是消息映像 MFC是通过在每一个能够接收和处理消息的类中,定义一个消息和消息处理函数的静态对照表,该表就叫做消息映像表,这种消息与消息处理函数一一对应的关系叫做消息映像。在消息映像表中,保存了该类能够处理的所有消息及其对应的消息处理函数的地址。当需要消息处理时,应用程序的Run函数就会将消息分发给相应的目标窗口函数,目标窗口函数就会通过消息映像查找

9、这个消息的处理函数,找到后就调用,否则到基类的消息映像中寻找,最后如果找不到消息处理函数,则调用Windows的默认消息处理函数。,3.4 MFC的消息映像,3.4 MFC的消息映像,2.消息处理路径 MFC应用程序对于不同的消息其处理的路径也不同,当被判定为窗口消息后,将直接对消息所属的窗口类的消息映像表进行搜索,找到匹配的消息处理函数后便执行它;如果找不到将搜索目标窗口类的基类。如果都没有找到,将调用缺省的消息处理函数。当判定为命令消息后,将依次搜索视图类及其基类的消息映像表、文档类及其基类映射表、文档模板类及其基类映射表、框架窗口类(多文档时为MDIFrameWnd、MDIChildWn

10、d)、应用程序类及其基类映射表。在命令消息搜索的过程中,只要找到命令消息的一个处理函数,将终止向后搜索;如果没有找到,命令对应的菜单或工具栏按钮将变灰显示。当判定为控件消息后,将首先搜索控件窗口类所属的类处理,如果没有找到,则搜索父窗口类的消息映像表。,3.4 MFC的消息映像,3.能够处理消息的类哪些类能够处理消息(也就是具有消息映像)?通过上面的介绍,我们已经有了一定的了解,下面总结如下:CWnd类及其派生类都可以接收和处理消息,在开发工具的属性窗口中,通过消息或事件列表来添加窗口消息或命令事件的处理函数。派生于CcmdTarget类的非窗口类,只能处理WM_COMMAND命令消息,在开发

11、工具中,通过事件列表来添加命令事件的处理函数。在能够处理消息的类的头文件中必须有DECLARE_MESSAGE_MAP宏,在类的实现文件CPP文件中使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏。,3.5应用程序的调试,一个应用程序的代码编写完之后,要想运行应用程序必须编译和连接。VC+编译器在编译和连接时,会检查语法错误,提供编译连接时的错误信息,帮助用户修改错误。一个大的应用程序,一般要分阶段编译也就是写完一个基本的类或函数就要编译改错,这样可以降低程序的调试难度。一个程序编译连接通过之后,并不能保证程序的正常工作,经常会发生一些运行错误,开发人员可以通过Debu

12、g调试或TRACE宏,找到错误点进而解决程序运行错误。,3.6专题讨论与作业设计,专题讨论(1)MFC应用程序向导的使用方法(2)构成Windows应用程序的MFC应用程序框架类之间的关系(3)MFC应用程序的启动过程(4)MFC应用程序的消息处理机制(5)鼠标与键盘消息的处理作业设计设计一个单文档结构的应用程序,在应用程序窗口的工作区中响应键盘输入,要求如下:(1)单击键盘上的方向键时,窗口中显示“你按了方向键”;(2)单击键时,窗口中显示“你按下了Shift键”;(3)单击键时,窗口中显示“你按下了Ctrl键”;(4)单击键时,窗口显示“你按下了Ctrl+A键”;(5)单击键时,窗口显示“你按下了Alt+B键”。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号