资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
返回第四章 利用MFC开发Windows应用程序本章导读 理解MFC的概念和作用。 理解Windows应用程序的特点和运行机制。 掌握利用MFC Appwizard 创建Windows应用程序的步 骤和方法,弄清MFC Appwizard所创建的应用程序中所 产生的主要类及其功能、组成文件和程序的框架结构。 理解消息的概念,掌握编写Windows应用程序过程中 所涉及到的消息的种类、特点、消息的发送和接收的基 本过程和机制。 掌握消息映射、消息处理函数的概念及二者间的关系 。 掌握利用Class Wizard增加、修改和删除窗口消息处 理函数的方法和步骤,并理解程序代码的变化过程和特 点。 1返回本章导读MFC(Microsoft Foundation Class)是Microsoft公 司推出的Microsoft基本类库。在编写Windows应用程 序时,必须编写的大量重复代码都由MFC中定义的类 和支持代码提供了;不必再直接使用Windows API( 应用程序接口)来进行编程工作,使用MFC提供的位 于Windows API之上的C+库,使程序员的工作变得 更加容易。在Visual C+ 6.0中,用户不仅可以方便 地使用MFC,而且还可以使用向导(Wizard)来辅助 开发应用程序。MFC实际上是一个扩展的、丰富的 C+类层次结构,在MFC中封装了SDK结构、功能及 应用程序框架内部技术,隐藏了过去许多Windows程 序不得不处理的许多重复工作。 因此,从本章开始,将着重讨论如何利用Visual C+ 6.0的强大功能开发Windows下的应用程序。 2返回4.1 Windows应用程序的特点与消息驱动机制基于Windows操作系统的应用程序的特点是: 标准的图形用户界面,比如窗口、菜单、按钮、列 表框等; 应用程序与硬件无关的特性,对于同一类硬件,不 论厂家、型号,程序都无需进行任何修改就可以运行 ; 所有的Windows应用程序都是消息驱动机制,也就 是说Windows程序是通过操作系统发送的消息来处理 用户的输入的。在进行Windows编程之前,必须了解Windows的运 行机制。在Windows操作系统中,无论是系统产生的 动作或是用户运行应用程序产生的动作都称为事件 (Events)产生的消息(Message)。无论是Windows应用程序的设计、还是它的应用, 都是基于消息驱动方式的,这是Windows应用程序与 传统的应3返回用程序最大的区别。在传统的编程方式中,程序 是主动的。程序主动执行,只有当需要用户通过 键盘或鼠标输入信息时,才进行查询或等待。获 得输入后,程序继续运行。而Windows应用程序是 被动的,正常情况下,只是等待被消息触发。当 用户点击鼠标或按下了键盘,则由操作系统将这 些操作转化为特殊的消息,传递给应用程序,应 用程序再用对应的消息处理过程进行处理,处理 完毕后,继续等待下一个消息。消息驱动是Windows操作系统的一大特色,操 作系统将包括用户输入在内的各种事件以消息的 形式发送到目标,目标系统再根据消息的具体内 容进行相应的处理。4.1 Windows应用程序的特点与消息驱动机制4返回4.2 利用MFC Appwizard 创建Windows应用程序在C+中,事物之间的关系是通过类的派生和类的 成员函数的重载来反映的。而在Visual C+ 6.0中,类 同样是最重要的元素。如一个字符串可以是类Cstring 的对象,一个窗口可以是类CWnd的对象,一个对话 框可以是类Cdialog的对象等等。Visual C+ 6.0中的MFC AppWizard(应用程序向导) 可以使用户自动生成一些常用的标准程序结构和编程 风格。例如一般的Windows应用程序结构、DLL应用 程序结构、单文档(SDI)应用程序结构、多文档(MDI) 应用程序结构等。下面详细介绍利用MFC AppWizard创建一个 Windows应用程序的步骤: 第零步 启动Visual C+ 6.0,选择【File】菜单下的【 New】菜单项,选择【Projects】标签,选择【MFC AppWizard(exe)】项目类型,在【Project name】中输 入5返回项目名MyExp,定位于“E:C+EXAMPLE”文件夹中, 单击【OK】按钮。 第一步 选择【Single document】应用类型,即单文档应 用程序,其他使用默认值,单击【Next】按钮。 第二步 让用户选择程序中是否加入数据库支持,在此 使用默认值【None】,单击【Next】按钮。 第三步 让用户选择在程序中加入复合文档,自动化或 ActiveX控件的支持,在此使用默认值,单击【Next】 按钮。 第四步 让用户选择应用程序的一些特性,在此使用默 认值,单击【Next】按钮。 第五步 让用户选择应用程序主窗口的风格、在源文件 中是否加入注释、使用怎样的MFC类库,在此使用默认 值,单击【Next】按钮。4.2 利用MFC Appwizard 创建Windows应用程序6返回第六步 用户可以对MFC AppWizard提供的缺省类名、 基类名、头文件名、源文件名进行修改,使用默认值 ,单击【Finish】按钮。则会显示出用户在前面几个 步骤中作出的选择内容,单击【OK】按钮,系统开 始创建应用程序,并回到Visual C+ 6.0的主界面。运行过的应用程序MyExp可以脱离Visual C+ 6.0 单独运行,运行该文档可以双击 “E:C+EXAMPLEDebug”下的MyExp.exe文件。和 所有的Windows应用程序一样,MyExp也包含标题栏 、菜单栏、工具栏、状态栏等窗口元素。 4.2 利用MFC Appwizard 创建Windows应用程序7返回4.3 MFC应用程序的类和文件4.3.1 类说明AppWiZard在生成应用程序时,共派生了5个类单 击“MyExp classes”左侧的“+”展开所有的类,即可显示 出应用程序MyExp的5个类,其中: CAboutDlg: 关于About对话框的对话框类 CMainFrame: 主框架窗口类 CMyExpApp: 应用程序类 CMyExpDoc: 文档类 CMyExpView:视图类在工程中,每个类都拥有自己的类定义文件(*.H )和类实现文件(*.CPP)。类定义文件主要保存各 种类的定义;类实现文件主要保存各种类的成员函数 的实现代码。 8返回下面分别对这5个类进行说明: 关于About对话框的对话框类CAboutDlgCAboutDlg是工程MyExp的对话框类,它是由MFC 类库中的CDialog类派生而来的。 主框架窗口类CMainFrame CMainFrame是工程MyExp的主框架窗口类,它的 基类是CFrameWnd。头文件为MainFrm.h,实现文件 为MainFrm.cpp。主框架窗口类用于管理主程序的窗口,来显示窗口 的标题栏、工具栏、状态栏等;同时还处理对窗口操 作的消息,例如窗口最大化、最小化、改变窗口大小 等一般操作。视图窗口是主框架窗口的子集,对于多 文档界面(MDI)应用程序,主框架窗口是所有MDI 子窗口的容器。4.3 MFC应用程序的类和文件9返回 应用程序类CMyExpApp CMyExpApp是工程MyExp的应用程序类,它的基类 是CWinApp。头文件为MyExp .h,实现文件为 MyExp.cpp。应用程序类管理程序的整体,控制应用程序的所有 对象,包括文档、视图和边框窗口,并完成应用程序 的初始化工作和程序退出时的清除工作。注意:每个基于MFC的应用程序都必须有一个从 CWinApp类派生的对象。 文档类CMyExpDocCMyExpDoc是工程MyExp的文档类,它的基类是 CDocument。头文件为MyExpDoc.h,实现文件为 MyExpDoc.cpp。4.3 MFC应用程序的类和文件10返回文档类负责存放程序的数据并读取磁盘文件数据, 或将磁盘文件数据写入磁盘文件中。文档类必须通过 视图类实现与用户的交互。 视图类CMyExpView CMyExpView是工程MyExp的视图类,它的基类是 CView。头文件为MyExpView.h,实现文件为 MyExpView.cpp。视图类主要负责管理视图窗口,显示文档类中的 数据,可以显示在屏幕上,也可以输出到打印机或其 他设备上;也负责处理用户数据,接受用户对数据的 鼠标、键盘操作并传送给文档类对象。 4.3 MFC应用程序的类和文件11返回4.3 MFC应用程序的类和文件4.3.2 文件说明App Wizard在自动生成工程时,除了生成上面介绍 的各个类的头文件和实现文件外,还生成了一些为建 立应用程序所需要的其他文件。这些文件可以在应用 程序生成时指定的路径(E:C+EXAMPLEMyExp) 中找到,下面分别对这些文件加以说明: 1. MyExp.clw:Class Wizard的信息存储文件,存储由 Class Wizard编辑已有的类或添加新类的信息,存储由 Class Wizard建立和编辑各种消息处理函数和映射变量 等的信息。 2. MyExp.dsp:Project文件,即工程文件。Project文件 中保存着工程的各种信息,一个工程文件对应一个工 程应用程序。12返回3. MyExp.dsw:Workspace文件。一个Workspace文件 可包含一个或多个工程。 4. MyExp.rc:资源定义文件,包含程序资源的定义, 其中保存了应用程序中使用到的各种资源的信息,包 括存贮在文件夹中的图标、位图和光标等。5. Resource.h:标准的头文件,它包含了所有资源符 号的定义,与MyExp.rc文件相对应。 6. StdAfx.h:包含在所有App Wizard程序中的标准头 文件,它用于包含其他包含在预编译头文件中文件。 7. StdAfx.cpp:包含在所有App Wizard程序中,它包 含所有标准include文件。 8. resMyExpDoc.ico:文件中包含了打开文档时所用 的图标文件。4.3 MFC应用程序的类和文件13返回9. resMyExp.rc2:资源定义文件,包含了用vc不能直 接编辑的资源。可以将所有不能由资源编辑器编辑的 资源放置到这个文件中。 10. resMyExp.ico:应用程序的图标文件。应用程序 图标包含在资源文件MyExp.rc中。 11. resToolbar.bmp:用于创建工具栏按钮的位图文件 。初始栏工具栏和状态栏是在主边框窗口类中构造的 。 12. ReadMe.txt:包含了对所有该程序的文件的解释信 息,并说明了所有创建的类。另外,如果在App Wizard的第4步中选择了 Context_sensitive Help选项,则App Wizard会自动生成 一个.hpj文件和一些.rtf文件,它们用以给出上下文的 帮助。 4.3 MFC应用程序的类和文件14返回Windows 应用程序一般是由消息驱动的(message- driven),这也是Windows编程方式与其他编程方式最 大的不同之处。消息就是操作系统通知应用程序某件事情已经发生 的一种方式。例如,当用户移动或双击鼠标、改变窗 口大小等,都将向适当的窗口发送消息,一个窗口可 以向另一个窗口发送消息,并且大多数窗口通过向其 他窗口发送一个稍有不同的消息来响应消息。Windows系统中的消息主要有三种类型:标准的 Windows消息、控件消息和命令消息。4.4 Windows消息15返回4.4 Windows消息4.4.1 标准的Windows消息所有以WM_为前缀的消息都是标准的Windows消 息(WM_COMMA
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号