




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件开发与实践,长春理工大学,韩成,计算科学技术学院,Email:hchwork办公室电话:85583332,考试成绩,平时成绩(30)期末考试成绩(70),考试方式,平时成绩:平时出勤情况课堂测验情况实验课成绩考试成绩:期末考试,概述,软件开发与实践,基本内容,什么是MFCMFC程序运行过程MFC类概述MFC的消息映射机制学习MFC的方法,一、什么是MFC,Windows操作系统采用了图形用户界面,借助于它提供的API(ApplicationProgrammingInterface)函数,用户可以编出具有漂亮图形界面的程序。VC+的微软基础类库(MicrosoftFoundationClassLibrary,MFC)封装了大部分API函数,并提供了一个应用程序框架,简化和标准化了Windows程序设计。,一、什么是MFC,1、应用程序框架MFC是一种称为应用程序框架的软件的组成部分。要理解应用程序框架,就要回顾一下用C语言编写Windows应用程序的全过程。首先要编写一个含有WinMain()的源代码模块,还要编写初始化应用程序的代码,接下来是消息循环,其次是注册窗口类(使用RegisterClass())。,在应用程序中,要创建一个大的switch语句,其中的case语句来对应每个要处理的消息。所以在这些基本程序中要花费大量的时间,还要记住很多规则。例如使用CreateBitmap()创建一个位图,用DeleteObject()来取消它,而且必须保证WM_PAINT代码中成对地使用BeginPaint()和EndPaint()从而不至于使Windows出现混乱。上述这些工作,正是应用程序框架要做的事情。使用它,将避免每次都去重新编写重复的代码。,MFC主要组成部分:类、宏和全局函数。类是MFC中最主要的内容。MFC类是以层次结构方式组织起来的。MFC中的类分成两部分,除了一些辅助类,大多数的MFC类是直接或间接从根类CObject派生而来。几乎每一个派生层次都与一具体的Windows实例相对应,如文档类、窗口类和视图类等。MFC宏主要功能:消息映射、运行时对象类型服务、诊断服务、异常处理。MFC约定:全局函数以“Afx”为前缀,全局变量以“afx”为前缀。,2、MFC体系结构,面向对象的windows编程接口繁琐的windowsAPI编程面向对象的MFC编程“站在巨人肩膀上”编程标准化的应用程序框架(ApplicationFramework),3、MFC的主要作用,举例:一个简单的应用程序,创建过程:在VisualC+6.0的启动界面中,选择“FileNew”,在弹出的“New”对话框中单击“Projects”选项卡。选择“MFCAppWizard(exe)”,在“Location”编辑框中输入要建立的工程所在的目录。在右上方的“Projectname”编辑框中输入工程名称Eg2_1,单击OK按钮,弹出MFCAppWizard向导对话框。在第一步中选择Singledocument,建立一个单文档界面应用程序SDI。取其默认值,直到第六步结束。,二、MFC程序运行过程,初始化全局变量入口函数得到应用程序对象指针全局初始化函数应用程序初始化生成并显示窗口消息循环,三、MFC类概述,MFC约有200个类,提供了Windows应用程序框架和创建应用程序的组件。其中只有5个核心类对应用程序框架有影响:CWinApp,CDocument,CView,CFrameWnd和CDocTemplate。五个之中只有CWinApp是必不可少的类,CWinApp的对象在应用程序中必须有一个,也只有一个,并是一个全局对象,它建立了应用程序执行的主线程。,三、MFC类概述,MFC是采用单一继承,从根类Cobject层层派生出绝大多数MFC中的类,其层次结构是最典型。参见下图,四、MFC消息处理机制,MFC消息映射机制,将消息与消息处理函数联系起来,形成一一对应的机制。消息映射宏声明:DECLARE_MESSAGE_MAP定义:BEGIN_MESSAGE_MAPON_COMMANDON_CONTROLON_MESSAGEEND_MESSAGE_MAP,Windows的三类消息,窗口消息(WM_XXX)只能由窗口或视图对象处理,即派生自CWnd命令消息(WM_COMMAND)由CCmdTarget派生的类都能处理该消息控件通知消息由控件向其父窗口发送WM_COMMAND消息,宏名称对应消息消息处理函数ON_WM_CHARWM_CHAROnCharON_WM_CLOSEWM_CLOSEOnCloseON_WM_CREATEWM_CREATEOnCreateON_WM_DESTROYWM_DESTROYOnDestroyON_WM_LBUTTONDOWNWM_LBUTTONDOWNOnLButtonDownON_WM_LBUTTONUPWM_LBUTTONUPOnLButtonUpON_WM_MOUSEMOVEWM_MOUSEMOVEOnMouseMoveON_WM_PAINTWM_PAINTOnPaint.,窗口消息:,命令消息(WM_COMMAND):对应规则:ON_COMMAND(,)例如:ON_COMMAND(ID_ABOUT,OnAbout)ON_COMMAND(ID_FILE_NEW,OnFileNew)ON_COMMAND(ID_FILE_OPEN,OnFileOpen)ON_COMMAND(ID_FILE_SAVE,OnFileSave)命令消息的来源主要有:菜单、工具栏和加速键,控件宏名称消息处理函数ButtonON_BN_CLICKED(,)memberFxnComboBoxON_CBN_DBLCLK(,)memberFxnEditON_EN_SETFOCUS(,)memberFxnListBoxON_LBN_DBLCLK(,)memberFxn,控件通知消息:,一个完整的消息处理过程,在类定义中加入消息处理函数的函数声明在类的消息映射表中加入相应的消息映射入口项在类的实现中加入消息处理函数的函数体,注:整个过程可以借助于ClassWizard对话框,处理自定义消息,首先确定用户自定义消息的值。#defineWM_USER_MSG1(WM_USER+100)在类定义中加入消息处理函数的函数声明使用ON_MESSAGE宏在类的消息映射表中加入相应的消息映射入口项在类的实现中加入消息处理函数的函数体,SendMessage()和PostMessage(),SendMessage()直接将消息发给消息处理函数,并等待消息处理函数运行完成并返回一个结果后,应用程序才能继续执行。PostMessage()将消息发送到拥有那个窗口的应用程序消息队列中,并立即返回。,一个画线例子,例:在视图窗口中用鼠标画线?分析:1、按下鼠标左键时记录直线起点位置的代码。2、释放鼠标左键时记录鼠标按钮释放时的位置,并在起点和终点间画线。,首先要对Windows编程概念和API函数有一定的了解,如WindowsAPI有哪些功能和哪些常用的数据结构等。学会抽象地把握问题,不求甚解,不要一开始学习VisualC+就试图了解整个MFC类库。从理解和使用两个方面学习MFC,理解MFC应用程序的框架结构。先大体上了解MFC的概念、组成和基本约定,从简单的类入手,结合程序设计,由浅入深,循序渐进、日积月累。,五学习MFC的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英美文学经典作品导读的教学设计教案
- 关于珍惜友情高一作文11篇范文
- 纪念鲁迅有感课件
- 农民互助土地流转经营合同
- 一年级作文过春节放炮8篇
- 一张难忘的照片作文500字小学作文15篇
- 唐诗的鉴赏方法:古诗语言风格教案
- 2025年全国英语等级考试(PETS)二级试卷:英语词汇与语法同步练习试题
- 合同审核流程及文件存档规范
- 早发型卵巢功能不全课件
- 小学语文新课程标准最新版2022
- 室外雨污水、消防管网施工方案
- 疫情防控实战演练方案脚本
- 资产评估事务所投标服务方案总体工作方案评估工作关键性内容及重难点分析
- 思想道德与法治全册教案
- (高职)旅游景区服务与管理电子课件完整版PPT全书电子教案
- 拆卸与安装油箱加油管
- 某国有企业精细管理降本增效经验交流汇报材料企业降本增效.doc
- 沪科版七年级数学上册全套ppt课件
- SCH壁厚等级对照表
- 海洋声学基础讲义吴立新
评论
0/150
提交评论