Visual C++ MFC基本应用程序的建立-第3章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 MFC基本应用程序的建立
3.1 Windows编程基础 编制一个功能强大和易操作的Windows应用程序 所需要的代码肯定会比一般的C++程序要多得多, 但并不是所有的代码都需要自己从头开始编写, 因为Visual C++不仅提供了常用的Windows应用 程序的基本框架,而且可以在框架程序中直接调 用Win32 API(Application Programming Interface, 应用程序接口)函数。这样,用户仅需要 在相应的框架位置中添加自己的代码或修改部分 代码就可实现Windows应用程序的rd的“Step 3”对话框
图3.9 MFC AppWizard的“Step 4”对话框
3.3.2 创建一个单文档应用程序
6. 第五步 保留以上默认值,单击[下一个]按钮进入下一步。弹出如图3.10所示的对话框,这里出现三 个方面的选项,供用户来选择: (1) 应用程序的主窗口是MFC标准风格还是窗口左边有切分窗口的浏览器风格; (2) 在源文件中是否加入注释用来引导用户编写程序代码; (3) 使用动态链接库还是静态链接库。
表3.4 Visual C++ 6.0文件类型的含义
3.3.3 MFC应用程序项目组织
除了上述文件外,还有相应的Debug(调试)或Release(发行)、Res(资源)等子文 件夹。例如上述创建的单文档应用程序项目Ex_SDIHello,其各文件的组织如图 3.13所示。当然,不同类型的项目的文件类型及数目会有所不同。
打开MFC类向导可以使用下列几种方法: (1) 选择“查看”→“建立类向导”菜单或直接使用Ctrl+W快捷键。 (2) 在源代码文件的文档编辑窗口中,右击鼠标,从弹出的快捷菜单中选择“建 立 类向导”命令。 当MFC类向导打开后,就会弹出如图3.15所示的MFC ClassWizard对话框。
图3.15 MFC ClassWizard对话框
Debug或Release 文件夹 编连过程产生的文件 运行文件Ex_SDIHello.exe 图标文件Ex_SDIHello.ico等
Res文件夹
Ex_SDIHello文件夹 类文件.cpp,.h 资源文件Ex_SDIHello.rc 项目及项目工作区文件 其他文件
工具栏资源Toolbar.bmp 其他资源Ex_SDIHello.rc2等
标题栏 工具栏
菜单栏
文档窗 口
状态栏
图3.12 Ex_SDIHello运行结果 图3.11 MFC AppWizard的“Step 6”对话框
3.3.3 MFC应用程序项目组织
1. 项目的文件组织 在Visual C++ 6.0中,项目中所有的源文件都是采用文件夹的方式进行管理的,它将 项目名作为文件夹名,在此文件夹下包含源程序代码文件(.cpp,.h)、项目文件(.dsp)以 及项目工作区文件(.dsw)等。表3.4列出了这些文件类型的的含义。
3.1.2 Windows编程特点
4. 动态链接库 动态链接库提供了一些特定结构的函数,能被应用程序在运行过程中装 入和连接,且多个程序可以共享同一个动态链接库,这样就可以大大节 省内存和磁盘空间。从编程角度来说,动态链接库可以提高程序模块的 灵活性,因为它本身是可以单独设计、编译和调试的。 Windows提供了应用程序可利用的丰富的函数调用,大多数用于实现其 用户界面和在显示器上显示的文本和图形,都是通过动态链接库来实现 的。这些动态链接库是一些具有.DLL扩展名或者有时是.EXE扩展名的文 件。 在Windows操作系统中,最主要的DLL有KERNEL32.DLL、GDI32.DLL 和USER32.DLL三个模块。其中,KERNEL32用来处理存储器低层功 能、任务和资源管理等Windows核心服务; GDI32用来提供图形设备接 口,管理用户界面和图形绘制,包括Windows元文件、位图、设备描述 表和字体等;而USER32负责窗口的管理,包括消息、菜单、光标、计 时器以及其它与控制窗口显示相关的一些功能。
3.1.2 Windows编程特点
2. 图形设备接口(GDI) 在传统的DOS环境中,想要在打印机上打印一幅图形是一件非常复杂的事情,因 为用户必须根据打印机类型和指令规则向打印机输送数据。而Windows则提供了 一个抽象的接口,称为图形设备接口(Graphical Device Interface,简称GDI), 使得用户直接利用系统的GDI函数就能方便实现输入或输出,而不必关心与系统 相连的外部设备的类型。 3. 基于资源的程序设计 Windows应用程序常常包含众多图形元素,例如光标、菜单、工具栏、位图、对 话框等,在Windows环境下,每一个这样的元素都作为一种可以装入应用程序的 资源来存放。这些资源就像C++程序中的常量一样,可以被编辑、修改,也可以 被其他应用程序所共享。Visual C++ 6.0中就提供这样的编辑器,可“所见即所 得”地对这些不同类型的资源进行设计、编辑等。
图3.10 MFC AppWizard的“Step 5”对话框
3.3.2 创建一个单文档应用程序
7. 第六步 保留默认选项,单击[下一步]按钮进行下一步,出现如图3.11所示的对话框。在 这里,用户可以对MFC AppWizard提供的默认类名、基类名、各个源文件名进 行修改。 单击[完成]按钮出现一个信息对话框,显示出用户在前面几个步骤中作出的选择 内容,单击[确定]按钮系统开始创建,并又回到了Visual C++ 6.0的主界面。 8.编译并运行 到这里为止,用户虽然没有编写任何程序代码,但MFC AppWizard已经根据用 户的选择内容自动生成基本的应用程序框架。单击编译工具栏上的运行工具按钮 “”或按快捷键Ctrl+F5,系统开始编连并运行生成的单文档应用程序可执行文 件 Ex_SDIHello.exe,运行结果如图3.12所示。
3.1.2 Windows编程特点
5 . 进程和线程 在32位Windows多任务操作系统中,采用了进程和线程的管理模式。进程是装入 内存中正在执行的应用程序。进程包括私有的虚拟地址空间、代码、数据及其它 操作系统资源,如文件、管道以及对该进程可见的同步对象等。进程包括了一个 或多个在进程上下文内运行的线程。线程是操作系统分配CPU时间的基本实体。 线程可以执行应用程序代码的任何部分,包括当前正在被其它线程执行的那些部 分。同一进程的所有线程共享同样的虚拟地址空间、全局变量和操作系统资源。 在一个应用程序中,可以包括一个或多个进程,每个进程由一个或多个线程构 成。
3.1.2 Windows编程特点
一个完整的Windows应用程序除了WinMain函数外,还包含用于处理用户动作和 窗口消息的窗口函数。这不同于一个C++的控制台应用程序,可以将整个程序包 含在main函数中。 Windows应用程序具有如下特性: ● 消息驱动机制 ●图形设备接口(GDI) ●基于资源的程序设计 ●动态链接库 ●进程和线程
3.1.2 Windows编程特点
1. 消息驱动机制 在Windows操作环境中,无论是系统产生的动作或是用户运行应用程序产生的动 作,都称为事件(Events)产生的消息(Message)。例如,在Windows 桌面(传统风 格)上,双击应用程序的快捷图标,系统就会执行该应用程序。在Windows的应 用程序中,也是通过接收消息、分发消息、处理消息来和用户进行交互的。 这种消息驱动的机制是Windows编程的最大特点。需要注意的是,许多Windows 消息都经过了严格的定义,并且适用于所有的应用程序。例如,当用户按下鼠标 的左键时系统就会发送WM_LBUTTONDOWN消息,而当用户敲了一个字符键时 系统就会发送WM_CHAR消息,若用户进行菜单选择或工具按钮单击等操作时, 系统又会相应地发送WM_COMMAND消息给相应的窗口等等。
3.4.1 类向导概述
可以看到ClassWizard对话框包含了5个标签页面,它们各自含义如下: ● Message Maps(消息映射):用来添加、删除和编程处理消息的成员函数。 ● Member Variables(成员变量):添加或删除与控件相关联的成员变量(或称数 据 成员),以便与控件进行数据交换。这些控件所在的类一般是从CDialog、 CPropertyPage、CRecordView或CDaoRecordView中派生的类。 ● Automation(自动化):为支持Automation的类(如ActiveX控件类)添加属性和方 法。 ● ActiveX Events(ActiveX事件):为ActiveX控件类添加触发事件的支持。 ● Class Info(类信息):有关项目中类的其他信息。 一般来说,MFC ClassWizard对话框最前两项是用户最关心的,也是最经常使用 的,因为几乎所有的代码编写都要利用这两个标签项。由于Member Variables功 能以后还会详细讨论,因此这里仅讨论Message Maps(消息映射)与类的添加和 删除方法。
图3.5 MFC AppWizard的“新建”对话框
3.3.2 创建一个单文档应用程序
2. 第一步 单击[确定]按钮,出现如图3.6所示的对话框,进行下列选择: (1)从应用程序类型单个文档(SDI)、多重文档(MDI)和基本对话框(基于对话框的 应用程序)中选择“单个文档”。 (2) 决定应用程序中是否需要MFC的文档视图(“文档/查看体系结构支持”)结构的 支持。若不选定此项,则程序中的磁盘文件的打开、保存以及文档和视图的相互 作用等功能需要用户来实现,且将跳过Step 2~Step 5,直接弹出“Step 6”对话 框。一般情况下,应选中此项。 (3) 选择资源所使用的语言,这里是“中文[中国]”。 3.第二步 单击[下一个]按钮,出现如图3.7所示的对话框,让用户选择程序中是否加入数据 库的支持(有关数据库的内容将在以后的章节中介绍)。
3.2 编制一个MFC应用程序
为了帮助用户处理那些经常使用又复杂繁琐的各种Windows操作, Visual C++设计了一套基础类库(Microsoft Foundation Class Library, 简称MFC)。MFC把Windows编程规范中的大多数内容封装成为各种 类,使程序员从繁杂的编程中解脱出来,提高了编程和代码效率。
3.1.3 Windows基本数据类型
表3.1列出了一些在Windows编程中常用的基本数据类型。
表3.1 Windows常用的基本数据类型
3.1.3 Windows基本数据类型
表3.2列出了常用的预定义句柄,它们的类型均为void *,即一个32位指针。
表3. 2 Windows常用的句柄类型
3.3 使用MFC AppWizard
3.3.1应用程序框架类型 这些类型基本满足了各个层次的用户的需要,但一般地,用户更关心的是MFC AppWizard(exe)应用程序框架,因为它包含用户最常用、最基本的三种应用程序类型: 单文档、多文档和基于对话框的应用程序。
表3.3 MFC AppWizard创建的应用程序类型
3.3.2 创建一个单文档应用程序
用MFC AppWizard(MFC应用程序向导)可以方便地创建一个通用的Windows单文档应用程 序,其步骤如下。 1. 开始 选择“文件”→“新建”菜单,在弹出的“新建”对话框中,可以看到工程标签页面中, 显示出一 系列的应用程序项目类型;选择MFC AppWizard(exe)的项目类型(该类型用于创建可执行 的Windows应用程序),将项目工作文件夹定位在“D:\Visual C++ 6.0程序”,并在工程编 辑 框中输入项目名Ex_SDIHello,结果如图3.5所示。
图3.13 Ex_SDIHello项目的文件组织
3.4 使用类向导
MFC类向导(ClassWizard)是Visual C++ 6.0中又一个非常有用的工具。 它能自动为一个项目添加一个类、进行消息和数据映射、创建OLE Automation(自动化)属性和方法以及进行ActiveX事件处理等。
3.4.1 类向导概述
图3.6 MFC AppWizard的“Step 1”对话框
图3.7 MFC AppWizard的“Step 2”对话框
3.3.2 创建一个单文档应用程序
4.第三步 单击[下一个]按钮进入下一步,出现如图3.8所示的对话框。允许用户在程序中加入复 合文档、自动化、ActiveX控件的支持。 5. 第四步 单击[下一个]按钮进入下一步,出现如图3.9所示的对话框,对话框的前几项依次确定 对浮动工具条、打印与预览以及通信等特性的支持。
相关文档
最新文档