资源预览内容
第1页 / 共77页
第2页 / 共77页
第3页 / 共77页
第4页 / 共77页
第5页 / 共77页
第6页 / 共77页
第7页 / 共77页
第8页 / 共77页
第9页 / 共77页
第10页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十三章 MFC库与Windows程序开发概述C+语言程序设计1本章主要内容lVisual C+环境简介lWindows 程序的基本结构lMFC库简介l使用Visual C+开发Windows程序l使用Visual C+开发 Windows 程序实例213.1 Visual C+环境简介Visual C+是Windows系统下一个很好的开发环境,它拥有友好的界面和强大的功能。Microsoft Visual C+,(简称Visual C+、MSVC、VC+或VC)是Microsoft公司推出的以C+语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过的设置就可使其生成的程序框架支持数据库接口、OLE2.0,WinSock网络、3D控制界面。Object Linking and Embedding,对象连接与嵌入。是一种面向对象的技术 。3Visual C+软件包包含了许多单独的组件,如编辑器、编译器、链接器、生成实用程序、调试器,以及各种各样为开发Microsoft Windows下的C/C+程序而设计的工具。Visual Studio把所有的Visual C+工具结合在一起,集成为一个整体,通过一个由窗口、对话框、菜单、工具栏、快捷键及宏组成的和谐系统,你可以观察和控制整个开发进程。该环境几乎就是Visual C+中所能“看见”的所有东西。所有其他事情都在其管理下在幕后运行。一般情况下,术语Visual C+既指整个产品,又指它的开发环境。456713.1 Visual C+环境简介13.1.1 Visual C+简介13.1.2 项目和项目工作空间81Visual C+集成开发环境(IDE)集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开 发应用程序的软件系统。 2向导(Wizard)向导是一个通过一步步的帮助引导你工作的工具。 Developer Studio中包含三个向导 。3MFC库库(library)是可以重复使用的源代码和目标代码 的集合。MFC(Microsoft Fundamental Classes)是 Visual C+开发环境所带的类库,在该类库中提供了大量的 类,可以帮助开发人员快速建立应用程序。 13.1.1 Visual C+简介94.一个用C+开发项目的 通用开发过程如图所示。 l建立一个项目的第一步是利 用编辑器建立程序代码文件, 包括头文件、代码文件、资源 文件等。l然后,启动编译程序,编译 程序首先调用预处理程序处理 程序中的预处理命令,经过预 处理程序处理的代码将作为编 译程序的输入。编译对用户程 序进行词法和语法分析,建立 目标文件。l文件中包括机器代码、连接 指令、外部引用以及从该源文 件中产生的函数和数据名。l此后,连接程序将所有的目 标代码和用到的静态连接库的 代码连接起来,为所有的外部 变量和函数找到其提供地点, 最后产生一个可执行文件。一 般有一个makefile文件来协调 各个部分产生可执行文件。105. Developer Studio界面116.常用功能键及其意义1213图 Visual C+ 6.0用户界面14图 VC+用户界面1513.1.2 项目和项目工作空间l Visual C+程序的核心是项目(Project)。l而项目位于工作空间(Workspace)之下。每一个Visual C+的工作空间中可以容纳多个项目。l在编写新程序时,一般首先要创建项目。项目文件保存了源代码文件和资源文件以及指定的编译设置信 息。Visual C+的编译系统使用这些信息编译并链接文件,以创建可执行文件。161. 新建工程l项目工作区是一个包含用户的所有相关项目和配置的实体。工程定义为一个配置和一组文件,用以生成最终的程序或二进制文件。l一个项目工作区可以包含多个工程,这些工程既可以是同一类型的工程,也可以是不同类型的工程(如Visual C+和Visual J+工程)。工作区现在以.dsw为后缀名(以前为.mdp),项目文件现在以.dsp(以前为.mak)为后缀名。17要新建一个工程,可以:(1)在File菜单上,单击New,选择Projects标签。(2)从列表中选择项目类型(3)单击Create New Workspace(新建工作区)或Add to Current Workspace(加入到当前工作区中)。(4)要使新工程为子工程,可以选择Dependency of 检查框,并从列表中选择一个工程。1819(5)在Project Name框中,输入新工程名,确保该名字必须与工作区中的别的工程名字不重名。(6)在Location框中,指定工程存放的目录:可以直接输入路径名,也可以单击旁边的Browse按钮,浏览选择一个路径。(7)单击Platform框中的相应检查框,指定工程的开发平台202 新建工作区要创建一个空的工作区,可以: (1)在File菜单上,单击New。(2)在随后弹出的对话框上,单击Workspace标签。(3)从类型列表中选择Blank Workspace。(4)在Workspace Name框中输入名字,注意名字不能与它将要包含的工程同名。(5)在Location框中指定存放工作区文件的目录。(6)单击OK。213 增加已有文件到工程中(1)打开包含目标工程的项目工作区文件。(2)在Project菜单上,单击Add to Project,然后单击Files。(3)在Insert Files into Project对话框中,浏览并定位要加入到工程中的文件名,然后选择它们。(4)从Insert Into中选择工程名字,然后单击OK。224 打开工作区选择File-Open Workspace,指定要打开的工作区;或选择File-Recent Workspaces ,从最近打开过的工作区列表中选择一个。235 设置当前工程选择Project Setting,可以为当前工程设置编译、链接和C/C+等各种选项。2425在创建项目时,Visual C+默认创建一个工作空间。工作空间文件保存有关Visual C+窗口的 状态、位置以及针对该工作空间所做的设置信息。一个完整的项目开发步骤如下:(1) 创建项目。(2) 使用工作空间窗口及其ClassView、 FileView和ResourceView选项卡对项目中的类、文件和资源进行操作。26(3) 在项目中添加或删除文件。(4) 在项目中编辑源代码和资源。(5) 为项目指定编译设备。(6) 编译项目。(7) 纠正编译或链接错误。(8) 执行并测试可执行文件。(9) 调试项目。(10) 配置和优化代码。2713.2 Windows程序的基本结构开始执行初始化应用初始化和创建 应用窗口进入消息循环并 从消息队列得到 一个消息当前消息是 否“退出”?终止执行程序是否定义了 对此消息的处理进行默认处理处理消息图示 Windows程序和消息的基本流程YYNN282913.1 Windows程序的特点Windows程序的主要特点。1用户界面统一、友好2独立于设备的图形操作3支持多任务4队列化消息输入5支持队列特征的消息驱动模型6事件驱动的程序设计307资源共享系统资源:CPU、显示器、内存、键盘、鼠 标 、定时器、通信端口、窗口可视元素、应用程序、,由句柄表示。用户自定义资源:窗口可视元素的映像,由一个自定义的整数或者名字在程序范围内来惟一标志。8程序和资源分开(1) 可降低内存需求。 (2) 便于统一管理和重复利用。(3) 应用程序与界面有一定的独立性。9支持应用程序间的数据交换3132Windows程序的基本结构13.2.1 Windows API13.2.2 Windows基础13.2.3 Windows消息映射及处理3313.2.1 Windows APIlAPI是应用程序编程接口(Application Programming Interface)的英文缩写。l它是大量函数加上数字常量、宏、结构、类型以及其它相关项的集合。l可以从C+、Microsoft Visual Basic汇编语言、Fortran、Pascal以及其它编程语言中调用这些函数。大多数API函数定义在称为Windows.h的文件中,也可以从Windows平台软件开发包(SDK)中得到它。34l根据Windows API函数的功能,可以将其分为三类: 窗口管理函数。用以实现窗口的创建、移动和修改功能。 图形设备(GUI)函数。用以实现与设备无关的图形操作功能。 系统服务函数。用以实现与操作系统有关的多种功能。3513.2.2 Windows基础要掌握Windows编程的方法,必须要了解以下内容: 事件及事件驱动的概念。 消息及其在编程中的应用。 绘图及设备环境。 对象与句柄。 坐标系。361事件l Windows花费大量时间等待用户的动作以便作出响应,所以这种系统也叫做事件驱动的系统。l 当用户按下一个键、移动鼠标或单击鼠标按钮 时,计算机通知Windows系统已经发生了一个事件, 以及事件的种类、发生的时间、发生的位置 (如坐标值 )。l 事件以如下三种方式产生: 通过输入设备,如键盘和鼠标。37 通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条和对话框上的控件。 来自Windows内部,如当一个后面的窗口显示到前面来。382消息当Windows捕获一个事件后,它会编写一条消息,将相关信息放入一个数据结构中,然后将包含此数据结构的消息发送给需要消息的程序。Windows消息是在Windows文件中用宏定义的常数。消息常数名通常以WM开头,格式为WM_XXX,例如WM_QUIT、WM_CHAR。39Windows将消息放入目标应用程序的消息队列中。在消息队列中所有消息都处于等待状态 ,直到应用程序准备处理它。应用程序中通常有一段代码称为消息循环,形式如下: While(GetMessage(DispatchMessage(40GetMessage 的含义是从消息队列中提取一个消息。TranslateMessage含义大致是将虚拟键消息转换为字符消息。 虚拟键是Windows系统定义的键盘按键。键盘上有多少个按键,就对应有多个虚拟键。TranslateMessage就将虚拟键转换成对应的字符。例如虚 拟键“A”(因为键盘上是大写,所以没有小写的)转换成字符 “a”(如果键盘处于大写状态)或字符“A”(如果键盘处于小写状态)。DispatchMessage的含义就是向msg中提到的窗口的窗口处理函数发送这个消息。 msg的类型是结构体,其中就包含了向哪个窗口发送消息的内容。41l在应用程序检索到WM_QUIT消息之前,这个 循环会不断运行。当它收到WM_QUIT时, GetMessage返回false,循环停止,同时应用程序终止。l当GetMessage返回一条消息后,循环将它传 递给TranslateMessage函数以检测该消息是不是来自键盘。如果是来自键盘的消息,则 TranslateMessage将原始键盘消息转化为 WM_CHAR消息。WM_CHAR消息是专为传递有 关键入字母信息设计的。TranslateMessage不处理非键盘消息。42l 消息处理函数是用于处理特定消息的一些代码。收到消息的应用程序会做些什么,取决于应用程序本 身。l程序员可以编写相应的处理函数以处理消息。如 果程序员没有为该消息编写处理函数,又需要把消息 传递给Windows,让Windows对消息进行默认处理 ,Windows会提供一个称作DefWindowP
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号