MFC编程讲座[1].ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《MFC编程讲座[1].ppt》由会员分享,可在线阅读,更多相关《MFC编程讲座[1].ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MFC程序设计 一一个个优优秀秀的的编编程程工工具具往往往往匹匹配配一一个个功功能能 强强 大大 的的 类类 库库,类类 库库 封封 装装 了了 大大 量量Windows编编程程需需要要使使用用的的函函数数和和数数据据结结构构。与与 Visual C+捆捆 绑绑 在在 一一 起起 的的MFC(Microsoft Foundation Class)微微 软软 基基 础础 类类 就就 是是 这这 样样 一一 个个 由由Microsoft公司设计的类库。公司设计的类库。MFC概述概述n n 类类库库是是一一个个可可以以在在应应用用程程序序中中使使用用的的相相互互关关联联的的C+类类的的集集合合。MF
2、C作作为为一一个个Windows编编程程类类库库,它它包包含含了了200多多个个类类,封封装装了了Windows的的大大部部分分编编程程对对象象以及与它们有关的操作。以及与它们有关的操作。n n n n 虽虽虽虽然然然然程程程程序序序序在在在在功功功功能能能能上上上上千千千千差差差差万万万万别别别别,但但但但从从从从本本本本质质质质上上上上看看看看,都都都都可可可可以以以以分分分分为为为为用用用用户户户户界界界界面面面面设设设设计计计计、文文文文件件件件操操操操作作作作、数数数数据据据据库库库库访访访访问问问问及及及及多多多多媒媒媒媒体体体体使使使使用用用用等等等等几几几几部部部部分分分分,这
3、这这这些些些些都都都都可可可可以以以以通通通通过过过过一一一一些些些些类类类类来来来来实实实实现现现现。MFCMFC提提提提供供供供了了了了一一一一个个个个标标标标准准准准化化化化的的的的程程程程序序序序结结结结构构构构,使使使使开开开开发发发发人人人人员员员员不不不不必必必必从从从从头头头头设设设设计计计计一一一一个个个个WindowsWindows应应应应用用用用程程程程序。序。序。序。n n MFCMFC实实实实际际际际上上上上是是是是一一一一个个个个庞庞庞庞大大大大的的的的文文文文件件件件库库库库,它它它它由由由由几几几几百个执行文件和源代码文件(如百个执行文件和源代码文件(如百个执行
4、文件和源代码文件(如百个执行文件和源代码文件(如HH文件)组成。文件)组成。文件)组成。文件)组成。MFC微软基础类微软基础类 利利利利用用用用Windows Windows APIAPI开开开开发发发发程程程程序序序序的的的的用用用用户户户户有有有有这这这这样样样样的的的的体体体体会会会会,即即即即使使使使开开开开发发发发一一一一个个个个简简简简单单单单的的的的WindowsWindows应应应应用用用用程程程程序序序序也也也也需需需需要要要要对对对对WindowsWindows的的的的编编编编程程程程原原原原理理理理有有有有很很很很深深深深刻刻刻刻的的的的认认认认识识识识,需需需需要要要要
5、手手手手工工工工编编编编写写写写冗冗冗冗长长长长的的的的代代代代码码码码。由由由由于于于于程程程程序序序序的的的的出出出出错错错错率率率率是是是是随随随随着着着着代代代代码码码码长长长长度度度度的的的的增增增增加加加加呈呈呈呈几几几几何何何何级级级级数数数数增增增增长长长长的的的的,而而而而且且且且当当当当程程程程序序序序长长长长度度度度逐逐逐逐渐渐渐渐膨膨膨膨胀胀胀胀时时时时,调调调调试试试试程程程程序序序序会会会会变变变变得得得得越越越越来来来来越越越越困困困困难难难难。因因因因此此此此,传传传传统统统统的的的的WindowsWindows应应应应用用用用程程程程序序序序设设设设计需要程序
6、员有极大的耐心和丰富的编程经验。计需要程序员有极大的耐心和丰富的编程经验。计需要程序员有极大的耐心和丰富的编程经验。计需要程序员有极大的耐心和丰富的编程经验。因因因因为为为为Visual Visual C+C+捆捆捆捆绑绑绑绑了了了了微微微微软软软软的的的的基基基基础础础础类类类类MFCMFC,所所所所以以以以编编编编程程程程时时时时我我我我们们们们就就就就可可可可以以以以利利利利用用用用类类类类的的的的可可可可重重重重用用用用性性性性和和和和可可可可扩扩扩扩充充充充性性性性,大大大大大大大大降降降降低低低低WindowsWindows应应应应用用用用程程程程序序序序设设设设计计计计的的的的难
7、难难难度和工作量。度和工作量。度和工作量。度和工作量。采用采用MFC编程的优点:编程的优点:n n 使使用用标标准准化化的的程程序序代代码码结结构构,有有利利于于程序员之间的交流。程序员之间的交流。n n Visual C+为为MFC提提供供了了大大量量的的工工具具支支持持,提提高高了了编编程程效效率率。如如利利用用MFC AppWizard创创建建MFC应应用用程程序序框框架架,利利用用ClassWizard方方便便地地对对Windows消消息进行管理。息进行管理。n n MFC应应用用程程序序的的效效率率较较高高,只只比比传传统统的的Windows C程程序序低低5%左左右右。并并且且,在
8、在MFC应应用用程程序序中中还还允允许许混混合合使使用用传传统统的的Windows API函数。函数。n n 其其它它优优势势:完完全全支支持持Windows所所有有的的函函数数、控控件件、消消息息、菜菜单单及及对对话话框框;具具有有良良好好的的稳稳定定性性和和可可移移植植性性,更更符符合合微微软软的风格等。的风格等。采采用用MFC方方式式编编程程提提高高了了Windows应应用用程程序序的的开开发发效效率率,但但由由于于MFC应应用用程程序序结结构构的的复复杂杂性性和和透透明明性性,要要想想完完全全掌掌握握MFC应应用用程程序序的的内内部部机机制制需需要要付付出出很很大大的的努力。努力。认认
9、识识MFC只只是是一一个个过过程程、一一个个手手段段,最终目的是为了良好并熟练地运用最终目的是为了良好并熟练地运用MFC。Windows编程机制编程机制n n Windows是是一一个个多多进进程程的的图图形形窗窗口口操操作作系系统统,Windows应应用用程程序序与与DOS应应用用程程序序有有很很大大的的区区别别。DOS应应用用程程序序采采用用顺顺序序执执行行过过程程,而而Windows是是一一个个基基于于事件的消息(事件的消息(Message)驱动系统。驱动系统。n n Windows应应用用程程序序是是按按照照“事事件件消消息息处处理理”非非顺顺序序的的机机制制运运行行。当当有有某某个个
10、事事件件(如如单单击击鼠鼠标标、键键盘盘输输入入和和执执行行菜菜单单命命令令等等)发发生生时时,Windows会会根根据据具具体体的的事事件件产产生生对对应应的的消消息息,并并发发送送到到指指定定应应用用程程序序的的消消息息队队列列;应应用用程程序序从从消消息息队队列列中中取取出出消消息息,并并根根据据不不同同的的消消息息进进行行不不同的处理。同的处理。事件和事件和消息消息n n 所所谓谓消消息息就就是是用用于于描描述述某某个个事事件件发发生生的的信信息息,而而事事件件是是对对于于Windows的的某某种种操作。操作。n n 事事件件和和消消息息密密切切相相关关,事事件件是是因因,消消息息是是
11、果果,事事件件产产生生消消息息,消消息息对对应应事事件件。所谓消息的响应,其实质就是事件的响应。所谓消息的响应,其实质就是事件的响应。n n n n 消消息息驱驱动动是是Windows应应用用程程序序的的核核心心,所所有有的的外外部部响响应应(如如键键盘盘、鼠鼠标标和和计计时时器器等等)都都被被Windows先先拦拦截截,转转换换成成消消息息后后再再发发送送到到应应用用程程序序中中的的目目标标对对象象,应用程序根据消息的具体内容进行处理。应用程序根据消息的具体内容进行处理。n n 消消息息不不仅仅可可由由Windows发发出出,它它也也可可 由由 应应 用用 程程 序序 本本 身身 或或 其其
12、 它它 程程 序序 产产 生生。Windows为为每每一一个个应应用用程程序序都都维维护护一一个个或或多多个个消消息息队队列列,发发送送到到每每个个程程序序窗窗口口的的消息都排成一个队列。消息都排成一个队列。几种常见的系统消息几种常见的系统消息n n鼠标输入鼠标输入鼠标输入鼠标输入WM_MOUSEMOVEWM_MOUSEMOVE鼠标移动鼠标移动鼠标移动鼠标移动WM_LBUTTONDOWNWM_LBUTTONDOWN鼠标左键按下鼠标左键按下鼠标左键按下鼠标左键按下WM_LBUTTONUPWM_LBUTTONUP鼠标左键释放鼠标左键释放鼠标左键释放鼠标左键释放n n键盘输入键盘输入WM_KEYDO
13、WN WM_KEYDOWN 键按下键按下键按下键按下WM_KEYUPWM_KEYUP键释放键释放键释放键释放WM_CHAR WM_CHAR 字符键入字符键入字符键入字符键入n n重画消息重画消息WM_PAINT WM_PAINT 重画窗口用户区重画窗口用户区重画窗口用户区重画窗口用户区鼠标消息处理鼠标消息处理n nCWndCWnd 的鼠标消息响应函数的鼠标消息响应函数的鼠标消息响应函数的鼠标消息响应函数afx_msgafx_msg void void OnLButtonDownOnLButtonDown(UINT(UINT flgflg,CPointCPoint pt);pt);afx_msg
14、afx_msg void void OnMouseMoveOnMouseMove(UINT(UINT flgflg,CPointCPoint pt);pt);flgflg 虚拟键标志;虚拟键标志;虚拟键标志;虚拟键标志;pt pt 鼠标的屏幕坐标鼠标的屏幕坐标鼠标的屏幕坐标鼠标的屏幕坐标 n n鼠标的消息入口鼠标的消息入口鼠标的消息入口鼠标的消息入口ON_WM_LBUTTONDOWN()ON_WM_LBUTTONDOWN()ON_WM_MOUSEMOVE()ON_WM_MOUSEMOVE()n n鼠标消息以外其他消息的处理也类似。鼠标消息以外其他消息的处理也类似。键盘输入处理键盘输入处理n n
15、CWndCWnd 的键盘输入消息响应函数的键盘输入消息响应函数的键盘输入消息响应函数的键盘输入消息响应函数afx_msgafx_msg OnKeyDownOnKeyDown(UINT(UINT chch,UINT rep,UINT,UINT rep,UINT flgflg ););afx_msgafx_msg OnCharOnChar(.);(.);afx_msgafx_msg OnKeyUpOnKeyUp(.);(.);chch 字符的字符的字符的字符的ASCIIASCII值,值,值,值,rep rep 重复次数,重复次数,重复次数,重复次数,flgflg 虚拟键虚拟键虚拟键虚拟键n n键盘
16、输入消息入口键盘输入消息入口键盘输入消息入口键盘输入消息入口ON_WM_KEYDOWN()ON_WM_KEYDOWN()ON_WM_CHAR()ON_WM_CHAR()ON_WM_KEYUP()ON_WM_KEYUP()MFC 对象的使用对象的使用n n定义方法:定义方法:定义方法:定义方法:1.1.定义定义定义定义 MFC MFC 派生类、定义其属性和成员函数派生类、定义其属性和成员函数派生类、定义其属性和成员函数派生类、定义其属性和成员函数n n构造方法:构造方法:构造方法:构造方法:1.1.构造构造构造构造 MFC MFC 类对象或其派生类对象类对象或其派生类对象类对象或其派生类对象类对
17、象或其派生类对象2.2.或调用其或调用其或调用其或调用其 Create Create 函数,创建函数,创建函数,创建函数,创建 Windows Windows 对象对象对象对象n n通信方法:通信方法:通信方法:通信方法:1.1.调用调用调用调用 MFC MFC 对象的成员函数对象的成员函数对象的成员函数对象的成员函数2.2.响应来自其他对象的消息传递响应来自其他对象的消息传递响应来自其他对象的消息传递响应来自其他对象的消息传递3.3.向其他对象发送消息发送向其他对象发送消息发送向其他对象发送消息发送向其他对象发送消息发送资源编辑资源编辑n n资源文件(就是以应用程序名和扩展名是.rc的文件)
18、很大程度上决定了应用程序的用户界面。在VC+中资源文件包括以下内容:资源种类资源种类对话框模板对话框模板对话框模板对话框模板DIALOGDIALOG菜单模板菜单模板菜单模板菜单模板MENUMENU图标图标图标图标ICONICON光标光标光标光标CURSORCURSOR位图位图位图位图BITMAPBITMAP加速键表加速键表加速键表加速键表ACCELERATORSACCELERATORS字符串表字符串表字符串表字符串表STRINGTABLESTRINGTABLE工具条模板工具条模板工具条模板工具条模板TOOLBARTOOLBARn n以上信息都在.rc文件中包含,同时.rc文件还包含了以下语句:
19、n n#include afxres.hn n#include afxres.rcn n它们的作用是把适合于所有应用程序的一些通用MFC库资源包含进来。VC 的资源编辑器的资源编辑器n n新建新建Insert -Insert -ResouceResouce -选择资源选择资源选择资源选择资源n n修改修改直接双点指定资源的图标直接双点指定资源的图标直接双点指定资源的图标直接双点指定资源的图标n n编辑编辑不同资源采用不同编辑器不同资源采用不同编辑器不同资源采用不同编辑器不同资源采用不同编辑器n n程序识别方法程序识别方法资源标识符(整数)资源标识符(整数)资源标识符(整数)资源标识符(整数)菜
20、单模板的编辑菜单模板的编辑n n结构描述结构描述结构描述结构描述菜单菜单菜单菜单菜单标识符菜单标识符菜单标识符菜单标识符 MENUMENU子菜单项子菜单项子菜单项子菜单项POPUP “POPUP “字体字体字体字体(&F)”(&F)”菜单项菜单项菜单项菜单项MENUITEM “MENUITEM “宋体宋体宋体宋体 tCtrltCtrl-S”-S”标识标识标识标识符符符符n n指定指定指定指定菜单标识符菜单标识符菜单标识符菜单标识符IDR_MAINMENUIDR_MAINMENUn n选择菜单项选择菜单项选择菜单项选择菜单项双点进入属性编辑双点进入属性编辑双点进入属性编辑双点进入属性编辑编写显示
21、文本等属性编写显示文本等属性编写显示文本等属性编写显示文本等属性指定指定指定指定菜单项标识符菜单项标识符菜单项标识符菜单项标识符ID_FONT_SONGTIID_FONT_SONGTI对话框模板的编辑对话框模板的编辑n n编辑窗编辑窗显示对话框和控制框工具条显示对话框和控制框工具条n n编辑编辑指定指定对话框标识符对话框标识符和属性和属性选择控制框,拖入对话框选择控制框,拖入对话框双点控制框,进入属性编辑双点控制框,进入属性编辑编辑属性,指定编辑属性,指定控制框标识符控制框标识符对话框对话框编程支持编程支持n nSDK 的支持的支持(API):使用特殊的窗口函数(指定对话框模板)使用特殊的窗口
22、函数(指定对话框模板)系统提供窗口类系统提供窗口类n nMFC 的支持:的支持:void CMainWnd:OnHelpAbout()CDialog CAboutdlog(IDD_MYDIALOG,this);/创建对话框对象创建对话框对象CAboutdlog.DoModal();/启动对话启动对话对话框的消息响应对话框的消息响应n n定义定义 CDialog 派生类派生类 CMyDialog各种消息响应函数各种消息响应函数OnInitDialog对话框初始化对话框初始化OnOK确认按钮确认按钮OnCancel取消按钮取消按钮n n获得控制框对象(界面元素)获得控制框对象(界面元素)CDial
23、og:GetDlgItem(控制框标识控制框标识符符)在在 ClassWizard 中设定中设定窗口的分类窗口的分类n n用户界面元素的容器用户界面元素的容器各种对话框(各种对话框(CDialog 派生类)派生类)各种视窗(各种视窗(CView 派生类派生类)产生窗口状态变化消息产生窗口状态变化消息n n用户界面的基本元素用户界面的基本元素各种控制框(各种控制框(CControl 的派生类)的派生类)向上级窗口发送通知消息向上级窗口发送通知消息控制框的使用控制框的使用n n六种主要的控制框六种主要的控制框按钮框(包括单选钮、复选钮、按钮框(包括单选钮、复选钮、分组框)分组框)静态框(文本显示)
24、静态框(文本显示)编辑框(单行、多行编辑)编辑框(单行、多行编辑)列表框(单选、复选)列表框(单选、复选)滚动条框(水平、垂直)滚动条框(水平、垂直)组合框(可编辑、不可编辑)组合框(可编辑、不可编辑)n nMFC MFC 支持支持支持支持CButtonCButtonCStaticCStaticCEditCEditCListBoxCListBoxCScrollBarCScrollBarCComboBoCComboBox x两种使用方法两种使用方法n n作为子窗口作为子窗口作为子窗口作为子窗口控制框对象作为上控制框对象作为上控制框对象作为上控制框对象作为上级窗口级窗口级窗口级窗口类的成员变类的成
25、员变类的成员变类的成员变量量量量n n动态生成动态生成动态生成动态生成在在在在 OnCreateOnCreate 中中中中调用该对象的调用该对象的调用该对象的调用该对象的 CreateCreate、指定风格、指定风格、指定风格、指定风格与属性与属性与属性与属性n n作为对话框元素作为对话框元素作为对话框元素作为对话框元素在对话框模板中定在对话框模板中定在对话框模板中定在对话框模板中定义控制框、描述其义控制框、描述其义控制框、描述其义控制框、描述其风格与属性风格与属性风格与属性风格与属性n n自动生成自动生成自动生成自动生成随对话框生成随对话框生成随对话框生成随对话框生成数据传输的控制数据传输的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 编程 讲座
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内