第2章MFC应用程序课件.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)
《第2章MFC应用程序课件.ppt》由会员分享,可在线阅读,更多相关《第2章MFC应用程序课件.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主要内容主要内容v2.1用MFC向导生成应用程序v2.2 应用程序框架分析v2.3 文档与视图v2.4 工具栏和状态栏v2.5-2.7MFC新功能v2.8 应用程序框架类对象分析2.1 用用MFC向导生成应用程序向导生成应用程序v用AppWizard应用程序向导生成MFC应用程序。单文档应用程序多文档应用程序对话框应用程序v用ClassWizard工具生成派生类、定义处理消息、管理对话框、定制MFC成员函数。2.1 用用MFC向导生成应用程序向导生成应用程序v演示MFC向导生成常用的三种应用程序。2.1.2 生成的应用程序类型生成的应用程序类型v基于对话框的应用程序CWinApp、CDialo
2、g类2.1.2 生成的应用程序类型生成的应用程序类型v单文档应用程序CWinApp、CFrameWnd、CView、CDocument2.1.2 生成的应用程序类型生成的应用程序类型v多文档应用程序CWinApp、CMDIFrameWnd、CMDIChildWnd、CView、CDocument2.1.3 向导生成工程文件简介向导生成工程文件简介v头文件与实现文件头文件与实现文件各个类的各个类的*.h和和*.cppResource.h:定义工程中所有资源标识符,给资源:定义工程中所有资源标识符,给资源ID分配一个整数值。分配一个整数值。StdAfx.h和和StdAfx.cpp:用于建立一个预编
3、译的头:用于建立一个预编译的头文件。文件。v资源文件资源文件*.rc和和*.rc2:是程序所使用的所有:是程序所使用的所有Windows资源的资源的列表。列表。*.ico:应用程序的图标所使用的图标文件。:应用程序的图标所使用的图标文件。*Doc.ico:应用程序的文档图标文件。文档图标一般:应用程序的文档图标文件。文档图标一般显示在多文档程序界面上。显示在多文档程序界面上。Toolbar.bmp:工具栏按钮的位图文件。:工具栏按钮的位图文件。2.1.3 向导生成工程文件简介向导生成工程文件简介v解决方案文件和工程文件解决方案文件和工程文件*.sln:保存当前解决方案所包含的工程的信息。:保存
4、当前解决方案所包含的工程的信息。*.vcxproj:包含当前工程的设置、工程中的:包含当前工程的设置、工程中的文件等信息。文件等信息。MFCMFC应用程序框架结构类的继承关系:应用程序框架结构类的继承关系:2.2 应用程序框架分析应用程序框架分析2.2.1 框架简介框架简介v 1.CObject类类CObject是是MFC类库的根类,它几乎描述了所有类库的根类,它几乎描述了所有MFC类类的一些公共特性,并且给所有由它派生出的类提供了的一些公共特性,并且给所有由它派生出的类提供了3种种重要特性,即:串行化支持、运行时类信息支持以及诊断重要特性,即:串行化支持、运行时类信息支持以及诊断和调试支持。
5、和调试支持。v2.CCmdTarget类类命令类命令类CCmdTarget是是CObject的子类,它是的子类,它是MFC库库中所有具有消息映射属性的类的公共基类。从中所有具有消息映射属性的类的公共基类。从CCmdTarget派生的类能在程序运行时动态创建对象和派生的类能在程序运行时动态创建对象和处理命令消息。处理命令消息。3.CWinApp类类CObjectCCmdTargetCWinThreadCWinApp应用程序类在类族中的位应用程序类在类族中的位置置WinMain函数的函数体的封装函数的函数体的封装支持线程管理支持线程管理2.2.1 框架简介框架简介 应用程序类应用程序类CWinAp
6、p是是CWinThread的子类,封装的子类,封装了初始化、运行、终止应用了初始化、运行、终止应用程序的代码。可以由此派生程序的代码。可以由此派生自己的应用类。自己的应用类。指向框架窗口的指针指向框架窗口的指针m_pMainWnd2.2.1 框架简介框架简介vCWinApp类中定义了三个可以重写的虚函数:InitInstance()-程序创建和显示窗口。l程序设计时,必须以CWinApp类为基类派生自己的应用程序类,并根据情况重写InitInstance()。Run(),处理消息循环。ExitInstance()程序结束时做收尾工作。2.2.1 框架简介框架简介4.文档模板类文档模板类CDoc
7、TemplateCObjectCObjectCCmdTargetCCmdTargetCDocTemplateCDocTemplateCSingleDocTemplateCSingleDocTemplateCMultiDocTemplateCMultiDocTemplate单一的文档指针单一的文档指针2.2.1 框架简介框架简介文档类链表文档类链表查阅查阅CPtrListCPtrList类类2.2.1 框架简介框架简介RUNTIME_CLASSRUNTIME_CLASS分分分分别别别别创创创创建建建建了了了了docdoc、viewview和和和和窗口框架类的对象窗口框架类的对象窗口框架类的对象窗
8、口框架类的对象2.2.1 框架简介框架简介5.CFrameWnd5.CFrameWnd类类 CFrameWndCFrameWnd类类是是CWndCWnd类类的的派派生生类类。它它是是所所有有其其他他框架窗口类的基类,主要用来管理一个窗口。框架窗口类的基类,主要用来管理一个窗口。CFrameWndCFrameWnd类类的的对对象象是是一一个个框框架架窗窗口口,包包括括边边框框、标标题题栏栏、菜菜单单、最最大大化化按按钮钮、最最小小化化按按钮钮和和一一个个激激活活的的视视图图。CFrameWndCFrameWnd类类支支持持单单文文档档界界面面,对对于于多多文文档档界界 面面,使使 用用 它它 的
9、的 两两 个个 派派 生生 类类 CMDIFrameWndCMDIFrameWnd和和CMDIChildWndCMDIChildWnd。CMDIFrameWndCMDIFrameWnd类类用用于于MDIMDI的的主主窗窗口口,CMDIChildWndCMDIChildWnd类用于类用于MDIMDI的子窗口。的子窗口。2.2.1 框架简介框架简介6.CView6.CView类类 视视图图类类CViewCView是是CWndCWnd类类的的子子类类。视视图图类类及及其其派派生类用于管理框架窗口的客户区。生类用于管理框架窗口的客户区。7.CDocument7.CDocument类类 文文档档类类CD
10、ocumentCDocument负负责责装装载载和和维维护护文文档档。文文档档包包括括应应用用程程序序的的工工作作成成果果或或环环境境设设置置数数据据等等,可可以是程序需要保存的任何内容。以是程序需要保存的任何内容。2.2.1 框架简介框架简介为为应应用用程程序序框框架架提提供供客客户户区区,承承担担用用户户数数据据的的显显示示(同同时时替替代代窗口框架接收外界的输入。因此,窗口框架接收外界的输入。因此,该类是程序员编码最多的地方该类是程序员编码最多的地方该类是程序员编码最多的地方该类是程序员编码最多的地方。派生关系派生关系与文档类的联系与文档类的联系纽带纽带用户区的绘制,用户区的绘制,注意:
11、谁来触发注意:谁来触发1)1)自自动动重重绘绘;2)2)手手动动视视图图更更新新2.2.1 框架简介框架简介应用程序的文档类由应用程序的文档类由CDocumentCDocument派生派生Serialize()Serialize()函数:函数:l l 文件操作时响应文件操作时响应l l Read data from fileRead data from filel l Write data to file Write data to file序列化序列化/串行化串行化SerializationSerialization2.2.1 框架简介框架简介v各对象之间的关系2.2.1 框架简介框架简介C
12、WinApp theAppCWinApp theApp;theApp.InitInstancetheApp.InitInstance系统系统应用程序对象文档模板文档对象文档对象窗口框架对象窗口框架对象视图对象视图对象1.1.应用程序各对象的创建顺序应用程序各对象的创建顺序2.2.2 MFC应用程序运行流程应用程序运行流程2.2.2 MFC应用程序运行流程应用程序运行流程v2.应用程序的执行过程应用程序的执行过程启动启动:创建应用程序对象创建应用程序对象theApp、调用应用程、调用应用程序类的构造函数初始化对象序类的构造函数初始化对象theApp。应用程序框架调用应用程序框架调用MFC提供的提
13、供的AfxWinMain()主函数。主函数。AfxWinMain()主函数,首先通过调用全局主函数,首先通过调用全局函数函数AfxGetApp()来获取来获取theApp的指针的指针pApp;然后通过该指针调用然后通过该指针调用theApp的成员函数的成员函数InitInstance()来初始化应用程序。来初始化应用程序。在应用程序的初始化过程在应用程序的初始化过程InitInstanceInitInstance中,同中,同时还构造了文档模板,产生最初的文档、视图和主时还构造了文档模板,产生最初的文档、视图和主框架窗口,并生成工具栏和状态栏。框架窗口,并生成工具栏和状态栏。2.2.2 MFC应
14、用程序运行流程应用程序运行流程当当InitInstance()函数执行完毕后,函数执行完毕后,AfxWinMain()函数将调用成员函数函数将调用成员函数Run(),进入消息处理循,进入消息处理循环;环;函数函数Run()收到收到WM_QUIT消息。消息。MFC首先调用首先调用CWinApp类的成员函数类的成员函数ExitInstance();然后调用静态对象的析构函数;然后调用静态对象的析构函数;退出应用程序,将控制权交给操作系统。退出应用程序,将控制权交给操作系统。WinMain-WinMain-AfxWinMainAfxWinMain应用程序初始化应用程序初始化应用程序初始化应用程序初始
15、化消息循环消息循环消息循环消息循环C:Program FilesMicrosoft Visual Studio 10.0vcatlmfcsrcwinmain.cpp2.2.2 MFC应用程序运行流程应用程序运行流程2.2.3 应用程序窗口应用程序窗口v重叠窗口v弹出窗口v子窗口 WindowsWindows消消息息主主要要有有3 3种种类类型型:标标准准WindowsWindows消消息息、控件消息和命令消息。控件消息和命令消息。1 1)标准标准WindowsWindows消息消息除除WM_COMMANDWM_COMMAND以以外外,所所有有以以“WM_WM_”为为前前缀缀的的消消息都是标准息
16、都是标准WindowsWindows消息消息;由窗口类或视图类处理由窗口类或视图类处理;都都有有默默认认的的处处理理函函数数,它它们们在在CWndCWnd类类中中进进行行了了预预定义。定义。1.消息的类别及其描述消息的类别及其描述 2.2.4 消息机制与消息循环消息机制与消息循环标准的标准的WindowsWindows消息又分为消息又分为3 3类:类:键盘消息、鼠标消息和窗口消息。键盘消息、鼠标消息和窗口消息。(1)(1)键盘消息键盘消息 键键盘盘消消息息与与键键盘盘某某个个键键的的动动作作相相关关联联。常常见见的的键键盘盘消息有以下几种。消息有以下几种。WM_KEYDOWNWM_KEYDOW
17、N、WM_KEYUPWM_KEYUP:按下、释放键产生的消息。:按下、释放键产生的消息。WM_CHARWM_CHAR:输入字符时产生的消息。:输入字符时产生的消息。2.2.4 消息机制与消息循环消息机制与消息循环(2)(2)鼠标消息鼠标消息 鼠鼠标标消消息息涉涉及及到到鼠鼠标标的的单单击击、双双击击、拖拖动动等等。常常用用的的鼠标消息有以下几种。鼠标消息有以下几种。WM_MOUSEMOVEWM_MOUSEMOVE:鼠标移动时产生的消息。:鼠标移动时产生的消息。WM_RBUTTONDOWNWM_RBUTTONDOWN:鼠标右键按下时产生的消息。:鼠标右键按下时产生的消息。WM_LBUTTONDO
18、WNWM_LBUTTONDOWN:鼠标左键按下时产生的消息。:鼠标左键按下时产生的消息。WM_LBUTTONDBLCLICKWM_LBUTTONDBLCLICK:鼠标双击时产生的消息。:鼠标双击时产生的消息。2.2.4 消息机制与消息循环消息机制与消息循环(3)(3)窗口消息窗口消息 窗窗口口消消息息一一般般与与创创建建窗窗口口、绘绘制制窗窗口口、移移动动窗口和销毁窗口等动作有关。窗口和销毁窗口等动作有关。在在MFCMFC应应用用程程序序中中,窗窗口口消消息息是是由由视视图图类类、窗口类及它们的派生类处理的。窗口类及它们的派生类处理的。2.2.4 消息机制与消息循环消息机制与消息循环2).2)
19、.控件消息控件消息 控控件件消消息息是是指指控控件件或或其其他他子子窗窗口口向向父父窗窗口口发发送送的的消息。消息。与与其其他他标标准准的的WindowsWindows消消息息一一样样,控控件件消消息息也也应应该该在在视视图图类类、窗窗口口类类中中进进行行处处理理。但但是是,如如果果用用户户单单击击按按钮钮控控件件时时,发发出出的的控控件件通通知知消消息息BN_CLICKEDBN_CLICKED将将作作为命令消息来处理。为命令消息来处理。2.2.4 消息机制与消息循环消息机制与消息循环3).3).命令消息命令消息 命命令令消消息息是是由由菜菜单单项项、工工具具栏栏按按钮钮、快快捷捷键键等等用用
20、户界面对象发出的户界面对象发出的WM_COMMANDWM_COMMAND消息。消息。命命令令消消息息与与其其他他消消息息不不同同,它它可可被被更更广广泛泛的的对对象象如如文文档档、文文档档模模板板、应应用用程程序序对对象象、窗窗口口和和视视图图等等处处理。理。2.MFC消息映射机制消息映射机制 MFC MFC采用消息映射来处理消息;采用消息映射来处理消息;消消息息映映射射机机制制包包括括一一组组消消息息映映射射宏宏,用用于于把把一一个个WindowsWindows消息和其消息处理函数联系起来。消息和其消息处理函数联系起来。所所有有从从CCmdTargetCCmdTarget类类派派生生出出来来
21、的的类类都都能能够够拥拥有有自自己己的消息映射。的消息映射。与与MFCMFC消息映射机制有关的宏有以下消息映射机制有关的宏有以下3 3个:个:DECLARE_MESSAGE_MAP()DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(MyClass,MybaseClass)BEGIN_MESSAGE_MAP(MyClass,MybaseClass)END_MESSAGE_MAP()END_MESSAGE_MAP()2.2.4 消息机制与消息循环消息机制与消息循环为了使用消息映射宏:为了使用消息映射宏:u首首先先在在类类定定义义的的结结尾尾用用DECLARE_MESS
22、AGE_MAP(DECLARE_MESSAGE_MAP()宏宏来来声声明明使使用用消消息息映映射射,该该宏宏表表示示在在为为各各个个处处理理函函数数所所写写的的类类声声明明之之后后存存在在消消息息映映射射条条目目,这这些些函函数数是该类的成员函数。是该类的成员函数。u然然后后在在类类的的实实现现源源文文件件中中用用BEGIN_MESSAGE_MAP(BEGIN_MESSAGE_MAP()和和END_MESSAGE_MAP()END_MESSAGE_MAP()宏来定义消息映射。宏来定义消息映射。MFCMFC应用程序应用程序MESSAG_MAPMESSAG_MAP消息映射的形式如下:消息映射的形式
23、如下:2.2.4 消息机制与消息循环消息机制与消息循环BEGIN_MESSAGE_MAP(MyClass,MybaseClass)/AFX_MSG_MAP(MyClass)/ClassWizard维护消息映射宏的标记维护消息映射宏的标记 ON_./MFC预定义消息映射宏预定义消息映射宏 ON_MESSAGE(message,memberFun)/用户自定义消息映射宏用户自定义消息映射宏 /AFX_MSG_MAPEND_MESSAGE_MAP()其中,其中,MyClass是拥有消息映射的派生类名,是拥有消息映射的派生类名,MybaseClass 是其基类名。是其基类名。2.2.4 消息机制与消息
24、循环消息机制与消息循环2.2.4 消息机制与消息循环消息机制与消息循环3 自定义消息处理自定义消息处理 自自定定义义消消息息处处理理:定定义义消消息息名名、分分配配IDID值值及及完完成成消消息息映射。映射。WindowsWindows将所有的消息值分为将所有的消息值分为4 4段:段:0 x00000 x00000 x03FF0 x03FF段段:用于用于WindowsWindows系统消息系统消息0 x04000 x04000 x7FFF0 x7FFF段段:用于用户自定义的窗口消息用于用户自定义的窗口消息0 x80000 x80000 xBFFF0 xBFFF段段:为为WindowsWindo
25、ws保留值保留值0 xC0000 xC0000 xFFFF0 xFFFF段段:用于应用程序的字符串消息。用于应用程序的字符串消息。2.2.4 消息机制与消息循环消息机制与消息循环常常量量WM_USER(WM_USER(为为0 x0400)0 x0400)与与第第一一个个自自定定义义消消息息值值相相对对应应,用用户户必必须须为为自自己己的的消消息息定定义义相相对对于于WM_USERWM_USER的的偏偏移移值值,利利用用#define#define语句直接定义自己的消息,如下所示:语句直接定义自己的消息,如下所示:#define WM_HIDE WM_USER+3/自定义消息自定义消息WM_US
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 应用程序 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内