第2章 vc++ 应用程序框架和基本流程.ppt_第1页
第2章 vc++ 应用程序框架和基本流程.ppt_第2页
第2章 vc++ 应用程序框架和基本流程.ppt_第3页
第2章 vc++ 应用程序框架和基本流程.ppt_第4页
第2章 vc++ 应用程序框架和基本流程.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章应用程序框架和基本流程、2.1应用程序框架、2.2应用程序的基本流程、2.3应用程序框架、应用程序框架是应该具备的一般软件模型基于MFC的应用框架是定义程序结构的MFC类库中类的集合。 可以使用MFC应用框架来获得标准化的程序结构和用户界面,大大减轻了程序员的负担,程序员不必太考虑用户界面,就可以集中精力进行程序设定修正,提高程序、安全性。 完整的程序模型,包括标准应用程序所需的所有基本功能,如文件访问、打印预览、数据交换、窗口放置以及使用这些功能的界面(菜单、工具栏、状态栏、对话框等) 如果有应用程序框架,程序员将根据个人需要在派生类中重写虚函数,定义新的数据成员,在资源编辑器中添加或

2、修改用户界面,进行消息映射,在MFC类中进行框架中的未2.1.1应用程序的基本结构,Windows应用程序有程序的输入输出和作为用户操作接口的窗口,内部的执行由外部发生的事件驱动。 程序启动、创建、显示窗口后,程序等待可能的输入后再进行判断,并进行适当的处理。 中的组合图层性质变更选项。 其中,“输入”是操作系统通过USER模块捕获后,以消息形式(数据结构)进入程序的消息队列。 因此,每个Windows程序都需要一个消息循环来连续检索消息队列中的消息、转换消息并将消息分配给相应的处理函数。 在Windows程序中,接收和处理消息的主角必须是窗口。 因此,每个窗口都需要一个处理消息的函数。 这个

3、函数叫做窗口函数。 窗函数窗proc通过switch/case判断消息的类别,决定处理方式。 另外,一个窗口还需要创建窗口的函数CreateWindow和显示窗口的函数ShowWindow。 在DOS系统中,C/C程序具有主函数main,用于控制程序的流程。 同样,在Windows系统中,每个用C/C编写的Windows程序都有一个主函数AfxWinMain,用于控制Windows程序的流程。 中的组合图层性质变更选项。 此外,每个Windows程序实例都需要一些初始化任务。 因此,必须定义初始化函数InitInstance。 如上所述,一个窗程序的基本结构是至少消息循环函数Run、窗函数窗p

4、roc、窗创建函数CreateWindow、窗显示函数ShowWindow、主函数afx window 因此,在MFC类库中,应用程序类CWinApp封装消息循环函数Run、程序初始化函数InitInstance和退出函数exit实例中的组合图层性质变更选项。 所有使用MFC类库开发的Windows程序都至少有一个源自CWinApp的应用程序类和一个源自CWnd的窗口类,但是AfxWinMain函数由系统提供,不能更改窗口函数封装窗口proc、窗口创建函数Create、窗口显示函数ShowWindow,将窗口句柄HWND定义为数据成员,定义了多个窗口消息处理函数。 使用2.1.2向导生成应用框

5、架,AppWizard创建使用MFC的典型Windows应用程序开发项目,并提供一系列对话框和用户可选择的选项使用AppWizard生成最简单的应用程序框架(Hello程序)。从AppWizard Step1可以看出,MFC生成的应用程序的用户界面, 单文档类型:主框窗口视图文档多文档类型:主框窗口子框窗口视图文档对话框类型:对话框控件窗口类型和简称对话框类型:窗口类型:边框窗口视图对话框类型:对话框图标2.2应用程序的基本流程,应用程序类构成应用程序的主执行线程。 基于MFC类库构建的每个应用程序只需要一个从CWinApp类派生的全局对象。 以Hello程序为例,在应用程序类的实现文件Hel

6、loApp.cpp中包含CHelloApp theApp; 2.2.2 AfxWinMain函数和main函数是常见C/C DOS类型程序的入口点,而AfxWinMain函数是Windows程序的入口点。 中的组合图层性质变更选项。 但是,在VC中,程序员不需要编写AfxWinMain代码。 这由MFC类库提供,在应用程序启动时自动调用。 AfxWinMain函数(winmain.cpp )是指cwin thread * pthread=afxgetthread (); AfxWinInit (); /图形用户界面初始化pthread-init应用程序(); /程序初始化pThread-Ini

7、tInstance (); /程序实例初始化pThread-Run (); /消息周期(程序执行) AfxWinTerm (); /程序结束,InitApplication函数一般没有实质性的内容,程序的初始化主要以InitInstance函数进行。 InitInstance函数主要是完成窗口创建、显示、更新等重要初始化工作,必须用CWinApp派生类重写的成员(虚拟)函数。 2.2.3应用程序初始化,boolchelloapp 33603360 initinstance () m _ pmainwnd=newchelloframe (); 显示窗口(m _ ncmdshow ) :更新窗口(

8、); 时,所执行的步调达到pThread -Run (),并调用CWinThread的Run函数。 Run函数主要是调用全局函数PeekMessage来检查消息队列,如果有消息,则调用成员函数PumpMessage来发送消息,并将消息分配给适当的处理函数来进行处理。 2.2.4消息周期,创建theApp /全局应用程序对象,AfxWinMain /门户函数,AfxWinInit /GUI初始化,InitInstance /初始化应用程序实例。AfxWinTerm /退出程序、2.2.5程序的启动、执行和退出、2.3应用程序框架类及其主要成员函数、应用程序框架配置:应用程序类边界窗口类和视图类或

9、2.3.1应用程序类此应用程序类包括在Windows上初始化、运行和退出MFC应用程序的过程。 下图显示了CWinApp类的MFC系统的层次结构。 和, 指定了CWinApp的主数据成员: m_pszAppName :应用程序名称m_pMainWnd :指向主边界窗口的指针m_lpCmdLine :应用程序的命令行m_ncmdsline 初始化itInstance ()函数实例处理Run ()函数消息循环终止ExitInstance ()函数应用程序OnIdle ()函数空闲处理,2.3.2边框窗口类和视图类单个文档中的组合图层性质变更选项。 主框架窗口在屏幕上生成带框架的可调整大小的桌面窗口

10、。主边框窗口通常还包括菜单栏、工具栏和状态栏。 2 .在子边框窗口类多文档的基于窗口的应用程序中,主边框窗口中有一个或多个由CChildFrame管理的子边框窗口,这些窗口由CMDIChildWnd类派生。中的组合图层性质变更选项。 子边框窗口只能位于主边框窗口中,子边框窗口完全被视图占据,具有自己的菜单栏、工具栏、状态栏或多个子边框窗口只有一个主边框窗口、菜单和工具菜单和工具栏显示的内容与当前活动的子边框窗口相关联。 中的组合图层性质变更选项。 视图由视图类管理,不支持文档/视图结构的应用程序,视图类直接从CWnd类派生自支持文档/视图结构的应用程序,视图类从CView或其派生类派生。 3

11、.视图是称为客户区域或工作区的框架窗口内的大空白区域,在画面上显示程序数据,接受用户的操作。 边框窗口类和视图类在MFC系统中的层次如下图所示。 4 .创建边框窗口类的主成员函数Create,加载框边框窗口预创建窗口边框窗口自定义显示窗口、更新窗口、DestroyWindow 用于销毁GetActiveDocument用于检索当前活动视图和文档。 EnableDocking、DockControlBar允许工具栏对接,决定特定的对接位置MDITile、MDICascade,重叠所有的子窗口MDIGetActive,形成当前活动的子边界窗口5 .视图类的主成员函数视图类用于程序的输入和输出,其主

12、成员函数从窗口基类CWnd,输入主要改写鼠标消息处理函数,输出主要改写OnPaint函数,然后单击屏幕上的数据在具有视图结构的程序中,由于OnPaint函数被重写并调用OnDraw函数,所以OnDraw函数负责文档的数据显示和屏幕重绘。 这里的变更的目的是为了容易实现“可见的东西”。 也就是说,打印函数OnPrint也调用OnDraw函数,使画面显示和打印输出保持一致。 2.3.3对话框类和控制类、1 .对话框类对话框有对话框型应用程序和临时弹出对话框2种,后者可分为通用对话框、自定义对话框、属性选项卡3种。 中的组合图层性质变更选项。 对话框和控件是Windows应用程序的另一个常用窗口。

13、使用对话框可以在屏幕上显示带有标题栏和边框的窗口。 内部分布着各种各样的控制。 控件是用于与用户交互的特定类型的输入/输出窗口。 对话框中有无菜单栏,但没有工具栏或状态栏。 基于对话框的应用程序是Windows常见的程序类型,如校正器和Windows Media Player,其中许多程序也是基于对话框的应用程序。 对话框应用程序的对话框类直接从CDialog类派生。 2 .控件类控件是可用于输入和输出的基本图形用户接口单元。 所有控件都必须由相应的父窗口类(对话框类或窗体视图类)进行管理。 MFC提供了许多控件类,并且可以使用第三方提供的ActiveX控件来满足不同的用户需求。 中的组合图层性质变更选项。 MFC控件类分为三类: Windows 3.x支持的常用控件类和Windows 95 /NT/2000支持的常用控件类。 所有这些控件类都以“Ctrl”结尾。 第三类是对随后添加的常规控制类的补充,它衍生自常规控制类,称为附加控制类,适用于特定的特殊应用程序。 中的组合图层性质变更选项。 通用控件类只能在Windows 95或更高版本中运行。 此外,在某些公共控件类中,应用程序不能定义数据变量,只能创建控制对象。 MFC系统中对话框类和控制类的层次如下图所示。3 .对话框类和控制类的主要成员函数OnInitDialog初始化对话框DoModal显示模式对话

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论