《Windows应用程序框架.ppt》由会员分享,可在线阅读,更多相关《Windows应用程序框架.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、联系方式:北京源智天下科技有限公司第二讲:第二讲:Windows应用程序框架 杨章伟杨章伟e-mail:1-2北京源智天下科技有限公司联系方式:课程内容安排课程内容安排Windows应用程序用程序设计基基础 MFC应用程序框架用程序框架 MFC应用程序框架用程序框架说明明 综合练习综合练习 思考和习题思考和习题 1-3北京源智天下科技有限公司联系方式:Windows应用程序用程序设计基基础 Windows程程序序设计是是一一种种完完全全不不同同于于传统的的DOS方方式式的的程程序序设计方方法法,其其内内部部运运行行原原理理是是一一种种事事件件驱动方方式式的的程程序序设计模模式式,主主要要是是基
2、基于于消消息息的的。当当用用户需需要要完完成成某某种种功功能能时会会调用用操操作作系系统的的某某种种支支持持,然然后后操操作作系系统将将用用户的的需需要要包包装装成成消消息息,并并投投递到到消消息息队列列中中,最最后后应用用程程序序从从消消息息队列列中中取取得得消消息息并并进行行响响应,其其流流程程如如图2-1所示。所示。1-4北京源智天下科技有限公司联系方式:Windows API Windows程序程序设计中,在中,在应用程序中要完成某个功能,用程序中要完成某个功能,都是以函数都是以函数调用的形式用的形式实现的。的。这些函数的集合就是这些函数的集合就是Windows操作系统提供给应用程序编
3、程的接口操作系统提供给应用程序编程的接口(Application Programming Interface),简称),简称Windows API。1-5北京源智天下科技有限公司联系方式:句柄句柄 在在Windows编程中读者将频繁接触到一个称为句柄编程中读者将频繁接触到一个称为句柄(HANDLE)的概念。)的概念。Windows程序中产生的任何资源程序中产生的任何资源(要占用某一块或大或小的内存),如图标、光标、窗口和(要占用某一块或大或小的内存),如图标、光标、窗口和应用程序的实例(已加载到内存运行中的程序)等。操作系应用程序的实例(已加载到内存运行中的程序)等。操作系统每产生一个这样的资
4、源时,都要将它们放入相应的内存,统每产生一个这样的资源时,都要将它们放入相应的内存,并为这些内存指定一个唯一的标识号。这个标识号即是该资并为这些内存指定一个唯一的标识号。这个标识号即是该资源的句柄。源的句柄。比如在大街上来来往往的汽车,有许多是相同型号、相同品比如在大街上来来往往的汽车,有许多是相同型号、相同品牌的,也有许多是不同型号、大小的汽车,那么如何分辩某牌的,也有许多是不同型号、大小的汽车,那么如何分辩某一辆汽车是属于谁的呢?就是通过车牌号。因为车牌号是唯一辆汽车是属于谁的呢?就是通过车牌号。因为车牌号是唯一的,那么车牌号就是汽车这个资源的句柄,如图一的,那么车牌号就是汽车这个资源的句
5、柄,如图2-3所示。所示。1-6北京源智天下科技有限公司联系方式:1-7北京源智天下科技有限公司联系方式:消息及消息队列消息及消息队列 在在应应用用程程序序中中,用用户户所所有有的的操操作作都都是是通通过过消消息息机机制制(Message)来来传传递递给给操操作作系系统统的的,操操作作系系统统将将每每个个事事件件都都包包装装成成一一个个称称为为消消息息的的结结构构体体MSG来来传传递递给给应应用用程程序序。例例如如用用户户在在某某个个程程序序活活动动时时按按了了一一下下键键盘盘,操操作作系系统统马马上上能能感感知知到到这这一一事事件件,并并且且能能够够知知道道用用户户按按下下的的是是哪哪一一个
6、个键键。操操作作系系统统并并不不决决定定对对这这一一事事件件如如何何作作出出反反应应,而而是是将将这这一一事事件件转转交交给给应应用用程程序序。由由应应用用程程序序决决定定如如何何对对这这一一事事件件作作出出反反应应,对对事事件件作作出出反反应应的的过过程程就就是是消息响应。消息响应。1-8北京源智天下科技有限公司联系方式:消息与应用程序消息与应用程序 在在Windows编编程程中中,消消息息与与应应用用程程序序的的关关系系如如图图2-4所所示。示。1-9北京源智天下科技有限公司联系方式:MFC应用程序框架用程序框架 应用程序框架是一个集合,其可以提供一般应用程序所应用程序框架是一个集合,其可
7、以提供一般应用程序所需的全部面向对象软件组件。或者说,一个应用程序框需的全部面向对象软件组件。或者说,一个应用程序框架是一个类库的超级集合。一个应用程序框架不同于单架是一个类库的超级集合。一个应用程序框架不同于单纯的类的集合,其自己定义了程序的结构。纯的类的集合,其自己定义了程序的结构。比如奔驰汽车的生产厂家,其可以生成所有的奔驰汽车比如奔驰汽车的生产厂家,其可以生成所有的奔驰汽车的零件,并有其自己的生产线,那么这个厂家就是一个的零件,并有其自己的生产线,那么这个厂家就是一个应用程序框架。在这个框架中,可以生产出很多型号的应用程序框架。在这个框架中,可以生产出很多型号的奔驰汽车,如图奔驰汽车,
8、如图2-5所示。所示。1-10北京源智天下科技有限公司联系方式:MFC简介介 MFC即即微微软基基本本类库,其其位位于于任任何何Windows API之之上上。在在这个个类库中中包包含含了了一一百百多多个个程程序序开开发过程程中中最最常常用用到到的的对象象。形形象象地地说,MFC就就是是一一个个人人才才管管理理中中心心。其其中中有有许许多多多多掌掌握握了了各各种种技技能能的的人人,有有工工程程师、教教师、医医生生等等。当当社社会会需需要要某某种种技技能能的的人人时,就就从从该MFC中中取取出出并并应用到用到环境中,如境中,如图2-6所示。所示。1-11北京源智天下科技有限公司联系方式:MFC应
9、用程序框架用程序框架说明明 打开前面创建的打开前面创建的Hello World工程的工作区,可以看到工程的工作区,可以看到系统在生成应用程序框架的过程中,自动生成了以下几系统在生成应用程序框架的过程中,自动生成了以下几个类。个类。CHelloWorldApp;CMainFrame;CHelloWorldView;CHelloWorldDoc。这些类在工程这些类在工程Hello World工作区上的显示如图工作区上的显示如图2-16所所示。示。1-12北京源智天下科技有限公司联系方式:1-13北京源智天下科技有限公司联系方式:CHelloWorldApp类类 CHelloWorldApp的基的基
10、类为类为CWinApp。如果需要。如果需要创创建建MFC应应用程序,首先要使用用程序,首先要使用CWinApp类类,因,因为为CWinApp类类不不仅仅代表了程序中运行的主代表了程序中运行的主线线程,而且代表了程,而且代表了应应用程序本身。用程序本身。在任何在任何MFC应应用程序中只有一个用程序中只有一个CWinApp对对象,用于控象,用于控制制应应用程序的初始化、启用程序的初始化、启动应动应用程序、运行主消息循用程序、运行主消息循环环、终终止止应应用程序。用程序。1-14北京源智天下科技有限公司联系方式:CMainFrame类类 类类CMainFrame的基类为的基类为CFrameWnd。其
11、是由。其是由MFC中的中的CFrameWnd派生来的,所以它也是一个框架窗口。主框派生来的,所以它也是一个框架窗口。主框架窗口类负责标题栏、菜单栏工具栏及状态栏的生成。事架窗口类负责标题栏、菜单栏工具栏及状态栏的生成。事实上,这些子窗口是可以按照用户的意图自定义的,只需实上,这些子窗口是可以按照用户的意图自定义的,只需要修改主框架窗口的实现文件即可。要修改主框架窗口的实现文件即可。1-15北京源智天下科技有限公司联系方式:CHelloWorldView类类和和CHelloWorldDoc类类 CHelloWorldView类类的基的基类为类为CView,而,而CHelloWorldDoc类类的
12、基的基类为类为CDocument。之所以把。之所以把CHelloWorldView类类和和CHelloWorldDoc类类一起介一起介绍绍是因是因为这为这两个两个类类是密切相是密切相关的。关的。视图视图是是显显示文档数据的界面,它主要占据着主框架窗口的客示文档数据的界面,它主要占据着主框架窗口的客户户区,区,视图类视图类不不仅仅把程序文档数据把程序文档数据显显示出来,它示出来,它还还能接受能接受用用户户的的输输入、入、编辑编辑。视图对视图对象也通象也通过过消息与主框架、文档消息与主框架、文档对对象相互操作。象相互操作。1-16北京源智天下科技有限公司联系方式:文档与视图的关系文档与视图的关系文
13、文档档对对象象是是存存储储程程序序数数据据的的地地方方。一一般般来来说说,把把要要存存储储的的数数据据放放到到文文档档对对象象中中,即即把把要要存存储储的的数数据据作作为为文文档档对对象象的的成成员员变变量量,进进而而实实现现文文档档的的串串行行化化。文文档档与与视视图图的的关关系系如如图图2-18所示。所示。1-17北京源智天下科技有限公司联系方式:综合练习综合练习 应用应用Visual C+6.0编写一个编写一个Windows应用程序,要求应用程序,要求在该程序窗口坐标的(在该程序窗口坐标的(200,200)位置显示)位置显示“欢迎使用欢迎使用Visual C+”的字样。的字样。1-18北
14、京源智天下科技有限公司联系方式:提示提示新建一个新建一个【MFC Applicationexe】应用程序,根据应用程序,根据AppWizard向导一步一步建立向导一步一步建立MFC框架,在生成框架的框架,在生成框架的OnDraw中加入语句:中加入语句:pDC-TextOut(200,200,欢迎使用迎使用Visual C+);1-19北京源智天下科技有限公司联系方式:思考和习题思考和习题什么是什么是API?句柄的作用是什么?句柄的作用是什么?消息机制的作用是什么?消息机制的作用是什么?什么是什么是MFC?其作用是什么?其作用是什么?如何创建一个基于如何创建一个基于MFC的应用程序框架?的应用程序框架?系统在生成应用程序框架的过程中,自动生成了几个类系统在生成应用程序框架的过程中,自动生成了几个类?其分别是?其分别是?分别说出生成框架时创建的分别说出生成框架时创建的4个类的作用。个类的作用。