![第十三章 MFC库与Windows程序开发概述_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/9/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb1.gif)
![第十三章 MFC库与Windows程序开发概述_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/9/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb2.gif)
![第十三章 MFC库与Windows程序开发概述_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/9/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb3.gif)
![第十三章 MFC库与Windows程序开发概述_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/9/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb4.gif)
![第十三章 MFC库与Windows程序开发概述_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/9/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb/e4f0b44d-38a8-4987-a5e7-a9e002e0b5fb5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第十三章第十三章 MFC MFC库与库与 WindowsWindows程序开发概述程序开发概述C+C+语言程序设计语言程序设计本章主要内容本章主要内容lVisual C+环境简介环境简介lWindows 程序的基本结构程序的基本结构lMFC库简介库简介l使用使用Visual C+开发开发Windows程序程序l使用使用Visual C+Visual C+开发开发 Windows Windows 程序实例程序实例13.1 Visual C+环境简介环境简介 Visual C+是是Windows系统下一个很好的开发系统下一个很好的开发环境,它拥有友好的界面和强大的功能。环境,它拥有友好的界面和强
2、大的功能。 Microsoft Visual C+,(简称,(简称Visual C+、MSVC、VC+或或VC)是)是Microsoft公司推出的以公司推出的以C+语言为基础的开语言为基础的开发发Windows环境程序,面向对象的可视化集成编程系统。环境程序,面向对象的可视化集成编程系统。 它不但具有程序框架自动生成、灵活方便的类管理、代它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过的设置就可使其生成的程序框架支持数据库接口、而且通过的设置就可使其生成的程序框架支持数据库接口、OL
3、E2.0,WinSock网络、网络、3D控制界面。控制界面。Object Linking and Embedding,对象连接与嵌入。是一种面向对象的技术。,对象连接与嵌入。是一种面向对象的技术。 VisualVisual C+C+软件包包含了许多单独的组件,如编辑器、编软件包包含了许多单独的组件,如编辑器、编译器、链接器、生成实用程序、调试器,以及各种各样为开发译器、链接器、生成实用程序、调试器,以及各种各样为开发MicrosoftMicrosoft WindowsWindows下的下的C/C+C/C+程序而设计的工具。程序而设计的工具。 Visual Studio把所有的把所有的Visua
4、l C+工具结合在一起,集成工具结合在一起,集成为一个整体,通过一个由窗口、对话框、菜单、工具栏、快捷为一个整体,通过一个由窗口、对话框、菜单、工具栏、快捷键及宏组成的和谐系统,你可以观察和控制整个开发进程。键及宏组成的和谐系统,你可以观察和控制整个开发进程。 该环境几乎就是该环境几乎就是Visual C+中所能中所能“看见看见”的所有东西。的所有东西。所有其他事情都在其管理下在幕后运行。一般情况下,术语所有其他事情都在其管理下在幕后运行。一般情况下,术语Visual C+既指整个产品,又指它的开发环境。既指整个产品,又指它的开发环境。13.1 Visual C+环境简介环境简介13.1.1
5、Visual C+简介简介13.1.2 项目和项目工作空间项目和项目工作空间1Visual C+集成开发环境(集成开发环境(IDE) 集成开发环境(集成开发环境(IDE)是一个将程序编辑器、编译器、)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开发调试工具和其他建立应用程序的工具集成在一起的用于开发应用程序的软件系统。应用程序的软件系统。 2向导(向导(Wizard) 向导是一个通过一步步的帮助引导你工作的工具。向导是一个通过一步步的帮助引导你工作的工具。Developer Studio中包含三个向导中包含三个向导 。 3MFC库库 库(库(library)是可
6、以重复使用的源代码和目标代码的集)是可以重复使用的源代码和目标代码的集合。合。MFC(Microsoft Fundamental Classes)是)是Visual C+开发环境所带的类库,在该类库中提供了大量的类,可开发环境所带的类库,在该类库中提供了大量的类,可以帮助开发人员快速建立应用程序。以帮助开发人员快速建立应用程序。 13.1.1 Visual C+简介简介4.一个用一个用C+开发项目的开发项目的通用开发过程如图所示。通用开发过程如图所示。 l建立一个项目的第一步是利建立一个项目的第一步是利用编辑器建立程序代码文件,用编辑器建立程序代码文件,包括头文件、代码文件、资源包括头文件、代
7、码文件、资源文件等。文件等。l然后,启动编译程序,编译然后,启动编译程序,编译程序首先调用预处理程序处理程序首先调用预处理程序处理程序中的预处理命令,经过预程序中的预处理命令,经过预处理程序处理的代码将作为编处理程序处理的代码将作为编译程序的输入。编译对用户程译程序的输入。编译对用户程序进行词法和语法分析,建立序进行词法和语法分析,建立目标文件。目标文件。l文件中包括机器代码、连接文件中包括机器代码、连接指令、外部引用以及从该源文指令、外部引用以及从该源文件中产生的函数和数据名。件中产生的函数和数据名。l此后,连接程序将所有的目此后,连接程序将所有的目标代码和用到的静态连接库的标代码和用到的静
8、态连接库的代码连接起来,为所有的外部代码连接起来,为所有的外部变量和函数找到其提供地点,变量和函数找到其提供地点,最后产生一个可执行文件。一最后产生一个可执行文件。一般有一个般有一个makefile文件来协调文件来协调各个部分产生可执行文件。各个部分产生可执行文件。5. Developer Studio界面界面6.常用功能键及其意义常用功能键及其意义图图 Visual C+ 6.0用户界面用户界面 图图 VC+用户界面用户界面输出窗口状态栏工具栏 菜单栏主工作空间项目工作空间13.1.2 项目和项目工作空间项目和项目工作空间l Visual C+程序的核心是项目(程序的核心是项目(Projec
9、t)。)。l而项目位于工作空间(而项目位于工作空间(Workspace)之下。每一个)之下。每一个Visual C+的工作空间中可以容纳多个项目。的工作空间中可以容纳多个项目。l在编写新程序时,一般首先要创建项目。项目文件在编写新程序时,一般首先要创建项目。项目文件保存了源代码文件和资源文件以及指定的编译设置保存了源代码文件和资源文件以及指定的编译设置信息。信息。Visual C+的编译系统使用这些信息编译并的编译系统使用这些信息编译并链接文件,以创建可执行文件。链接文件,以创建可执行文件。1. 新建工程新建工程l项目工作区是一个包含用户的所有相关项目和配置的实项目工作区是一个包含用户的所有相
10、关项目和配置的实体。工程定义为一个配置和一组文件,用以生成最终的体。工程定义为一个配置和一组文件,用以生成最终的程序或二进制文件。程序或二进制文件。l一个项目工作区可以包含多个工程,这些工程既可以是一个项目工作区可以包含多个工程,这些工程既可以是同一类型的工程,也可以是不同类型的工程(如同一类型的工程,也可以是不同类型的工程(如Visual C+和和Visual J+工程)。工作区现在以工程)。工作区现在以.dsw为后缀名为后缀名(以前为(以前为.mdp),项目文件现在以),项目文件现在以.dsp(以前为(以前为.mak)为后缀名。为后缀名。要新建一个工程,可以:要新建一个工程,可以:(1)在
11、)在File菜单上,单击菜单上,单击New,选择,选择Projects标签。标签。(2)从列表中选择项目类型)从列表中选择项目类型(3)单击)单击Create New Workspace(新建工作区)或(新建工作区)或Add to Current Workspace(加入到当前工作区中)。(加入到当前工作区中)。(4)要使新工程为子工程,可以选择)要使新工程为子工程,可以选择Dependency of 检检查框,并从列表中选择一个工程。查框,并从列表中选择一个工程。(5)在)在Project Name框中,输入新工程名,确保该框中,输入新工程名,确保该名字必须与工作区中的别的工程名字不重名。名
12、字必须与工作区中的别的工程名字不重名。(6)在)在Location框中,指定工程存放的目录:可以直框中,指定工程存放的目录:可以直接输入路径名,也可以单击旁边的接输入路径名,也可以单击旁边的Browse按钮,浏按钮,浏览选择一个路径。览选择一个路径。(7)单击)单击Platform框中的相应检查框,指定工程的开框中的相应检查框,指定工程的开发平台发平台2 新建工作区新建工作区要创建一个空的工作区,可以:要创建一个空的工作区,可以: (1)在)在File菜单上,单击菜单上,单击New。(2)在随后弹出的对话框上,单击)在随后弹出的对话框上,单击Workspace标签。标签。(3)从类型列表中选择
13、)从类型列表中选择Blank Workspace。(4)在)在Workspace Name框中输入名字,注意名字不能与框中输入名字,注意名字不能与它将要包含的工程同名。它将要包含的工程同名。(5)在)在Location框中指定存放工作区文件的目录。框中指定存放工作区文件的目录。(6)单击)单击OK。3 增加已有文件到工程中增加已有文件到工程中(1)打开包含目标工程的项目工作区文件。)打开包含目标工程的项目工作区文件。(2)在)在Project菜单上,单击菜单上,单击Add to Project,然后单击,然后单击Files。(3)在)在Insert Files into Project对话框中
14、,浏览并定位对话框中,浏览并定位要加入到工程中的文件名,然后选择它们。要加入到工程中的文件名,然后选择它们。(4)从)从Insert Into中选择工程名字,然后单击中选择工程名字,然后单击OK。4 打开工作区打开工作区 选择选择File-Open Workspace,指定要打开的,指定要打开的工作区;或选择工作区;或选择File-Recent Workspaces ,从最,从最近打开过的工作区列表中选择一个。近打开过的工作区列表中选择一个。5 设置当前工程设置当前工程 选择选择Project Setting,可以为当前工程设置编译、链接,可以为当前工程设置编译、链接和和C/C+等各种选项。等
15、各种选项。 在创建项目时,在创建项目时,Visual C+Visual C+默认创建一个工作默认创建一个工作空间。工作空间文件保存有关空间。工作空间文件保存有关Visual C+Visual C+窗口的状窗口的状态、位置以及针对该工作空间所做的设置信息。态、位置以及针对该工作空间所做的设置信息。 一个完整的项目开发步骤如下一个完整的项目开发步骤如下: (1) 创建项目。创建项目。 (2) 使用工作空间窗口及其使用工作空间窗口及其ClassView、FileView和和ResourceView选项卡对项目中的类、选项卡对项目中的类、文件和资源进行操作。文件和资源进行操作。(3) 在项目中添加或删
16、除文件。在项目中添加或删除文件。(4) 在项目中编辑源代码和资源。在项目中编辑源代码和资源。(5) 为项目指定编译设备。为项目指定编译设备。(6) 编译项目。编译项目。(7) 纠正编译或链接错误。纠正编译或链接错误。(8) 执行并测试可执行文件。执行并测试可执行文件。(9) 调试项目。调试项目。(10) 配置和优化代码。配置和优化代码。13.2 Windows程序的基本结构程序的基本结构开始执行开始执行初始化应用初始化应用初始化和创建初始化和创建应用窗口应用窗口进入消息循环并进入消息循环并从消息队列得到从消息队列得到一个消息一个消息当前消息是当前消息是否否“退出退出”?终止执行终止执行程序是否
17、定义了程序是否定义了对此消息的处理对此消息的处理进行默认处理进行默认处理处理消息处理消息图示图示 Windows程序和消息的基本流程程序和消息的基本流程YYNN13.1 Windows程序的特点程序的特点WindowsWindows程序的主要特点。程序的主要特点。1用户界面统一、友好用户界面统一、友好2独立于设备的图形操作独立于设备的图形操作3支持多任务支持多任务4队列化消息输入队列化消息输入5支持队列特征的消息驱动模型支持队列特征的消息驱动模型6事件驱动的程序设计事件驱动的程序设计7资源共享资源共享 系统资源:系统资源:CPU、显示器、内存、键盘、鼠、显示器、内存、键盘、鼠 标、标、定时器、
18、通信端口、窗口可视元素、应用程序、定时器、通信端口、窗口可视元素、应用程序、,由句柄表示。由句柄表示。 用户自定义资源:用户自定义资源:窗口可视元素的映像,由一个窗口可视元素的映像,由一个自定义的整数或者名字在程序范围内来惟一标志。自定义的整数或者名字在程序范围内来惟一标志。 8程序和资源分开程序和资源分开 (1) 可降低内存需求。可降低内存需求。 (2) 便于统一管理和重复利用。便于统一管理和重复利用。 (3) 应用程序与界面有一定的独立性。应用程序与界面有一定的独立性。 9支持应用程序间的数据交换支持应用程序间的数据交换Windows程序的基本结构程序的基本结构13.2.1 Windows
19、 API13.2.2 Windows基础基础13.2.3 Windows消息映射及处理消息映射及处理13.2.1 Windows APIlAPI是应用程序编程接口(是应用程序编程接口(Application Programming Interface)的英文缩写。)的英文缩写。l它是大量函数加上数字常量、宏、结构、类型以及其它相它是大量函数加上数字常量、宏、结构、类型以及其它相关项的集合。关项的集合。l可以从可以从C+、Microsoft Visual Basic汇编语言、汇编语言、Fortran、Pascal以及其它编程语言中调用这些函数。大多数以及其它编程语言中调用这些函数。大多数API函
20、函数定义在称为数定义在称为Windows.h的文件中,也可以从的文件中,也可以从Windows平台软件开发包(平台软件开发包(SDK)中得到它。)中得到它。l根据根据Windows API函数的功能,可以将函数的功能,可以将其分为三类:其分为三类: 窗口管理函数。用以实现窗口的创建、窗口管理函数。用以实现窗口的创建、移动和修改功能。移动和修改功能。 图形设备(图形设备(GUI)函数。用以实现与设)函数。用以实现与设备无关的图形操作功能。备无关的图形操作功能。 系统服务函数。用以实现与操作系统有系统服务函数。用以实现与操作系统有关的多种功能。关的多种功能。13.2.2 Windows基础基础 要
21、掌握要掌握Windows编程的方法,必须要了编程的方法,必须要了解以下内容:解以下内容: 事件及事件驱动的概念。事件及事件驱动的概念。 消息及其在编程中的应用。消息及其在编程中的应用。 绘图及设备环境。绘图及设备环境。 对象与句柄。对象与句柄。 坐标系。坐标系。1事件事件l Windows花费大量时间等待用户的动作以便作花费大量时间等待用户的动作以便作出响应,所以这种系统也叫做事件驱动的系统。出响应,所以这种系统也叫做事件驱动的系统。l 当用户按下一个键、移动鼠标或单击鼠标按钮当用户按下一个键、移动鼠标或单击鼠标按钮时,计算机通知时,计算机通知Windows系统已经发生了一个事件,系统已经发生
22、了一个事件,以及事件的种类、发生的时间、发生的位置以及事件的种类、发生的时间、发生的位置 (如坐标如坐标值值)。l 事件以如下三种方式产生:事件以如下三种方式产生: 通过输入设备,如键盘和鼠标。通过输入设备,如键盘和鼠标。 通过屏幕上可视的对象,如菜单、工通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条和对话框上的控件。具栏按钮、滚动条和对话框上的控件。 来自来自Windows内部,如当一个后面的内部,如当一个后面的窗口显示到前面来。窗口显示到前面来。 2消息消息 当当Windows捕获一个事件后,它会编写一条消捕获一个事件后,它会编写一条消息,将相关信息放入一个数据结构中,然后将包含息,将相
23、关信息放入一个数据结构中,然后将包含此数据结构的消息发送给需要消息的程序。此数据结构的消息发送给需要消息的程序。Windows消息是在消息是在Windows文件中用宏定义的常文件中用宏定义的常数。数。 消息常数名通常以消息常数名通常以WM开头,格式为开头,格式为WM_XXX,例如例如WM_QUIT、WM_CHAR。 Windows将消息放入目标应用程序的消息队将消息放入目标应用程序的消息队列中。在消息队列中所有消息都处于等待状态,列中。在消息队列中所有消息都处于等待状态,直到应用程序准备处理它。直到应用程序准备处理它。 应用程序中通常有一段代码称为消息循环,应用程序中通常有一段代码称为消息循环
24、,形式如下:形式如下: While(GetMessage(&msg,NULL,0,0) TranslateMessage(&msg); DispatchMessage(&msg); GetMessage 的含义是从消息队列中提取一个消息。的含义是从消息队列中提取一个消息。TranslateMessage含义大致是将虚拟键消息转换为字符消息。含义大致是将虚拟键消息转换为字符消息。虚拟键是虚拟键是Windows系统定义的键盘按键。键盘上有多少个按系统定义的键盘按键。键盘上有多少个按键,就对应有多个虚拟键。键,就对应有多个虚拟键。 TranslateMessage就将虚拟键转
25、换成对应的字符。例如虚就将虚拟键转换成对应的字符。例如虚拟键拟键“A”(因为键盘上是大写,所以没有小写的)转换成字(因为键盘上是大写,所以没有小写的)转换成字符符“a”(如果键盘处于大写状态)或字符(如果键盘处于大写状态)或字符“A”(如果键盘处(如果键盘处于小写状态)。于小写状态)。DispatchMessage的含义就是向的含义就是向msg中提到的窗口的窗口处理中提到的窗口的窗口处理函数发送这个消息。函数发送这个消息。msg的类型是结构体,的类型是结构体,其中就包含了向哪个窗口发送消息的其中就包含了向哪个窗口发送消息的内容。内容。l在应用程序检索到在应用程序检索到WM_QUIT消息之前,这
26、个循消息之前,这个循环会不断运行。当它收到环会不断运行。当它收到WM_QUIT时,时,GetMessage返回返回false,循环停止,同时应用,循环停止,同时应用程序终止。程序终止。l当当GetMessage返回一条消息后,循环将它传返回一条消息后,循环将它传递给递给TranslateMessage函数以检测该消息是不函数以检测该消息是不是来自键盘。如果是来自键盘的消息,则是来自键盘。如果是来自键盘的消息,则TranslateMessage将原始键盘消息转化为将原始键盘消息转化为WM_CHAR消息。消息。WM_CHAR消息是专为传递消息是专为传递有关键入字母信息设计的。有关键入字母信息设计的
27、。TranslateMessage不处理非键盘消息。不处理非键盘消息。l 消息处理函数是用于处理特定消息的一些代码。消息处理函数是用于处理特定消息的一些代码。收到消息的应用程序会做些什么,取决于应用程序收到消息的应用程序会做些什么,取决于应用程序本身。本身。l程序员可以编写相应的处理函数以处理消息。程序员可以编写相应的处理函数以处理消息。如果如果程序员没有为该消息编写处理函数,又需要把消息程序员没有为该消息编写处理函数,又需要把消息传递给传递给Windows,让,让Windows对消息进行默认处对消息进行默认处理,理,Windows会提供一个称作会提供一个称作DefWindowProc的的处理
28、函数。处理函数。lWindows首先调用程序员提供的处理函数,而不首先调用程序员提供的处理函数,而不用用Windows的默认方式。的默认方式。 l对于特定的消息有许多标准或典型的处理。对于特定的消息有许多标准或典型的处理。l例如,例如,WM_PAINT消息(在窗口中重新绘制内容消息(在窗口中重新绘制内容时发送)的处理函数需要重新构造显示在窗口中的时发送)的处理函数需要重新构造显示在窗口中的图像,需要重新绘制可见的文本行、图形等等。图像,需要重新绘制可见的文本行、图形等等。lWM_COMMAND用于处理来自菜单和按钮的命令,用于处理来自菜单和按钮的命令,相应的处理函数可能会显示一个对话框、完成一
29、次相应的处理函数可能会显示一个对话框、完成一次计算、选择一个选项或启动其它的操作等。计算、选择一个选项或启动其它的操作等。 3绘图及设备环境绘图及设备环境l Windows具有图形用户界面具有图形用户界面 (GUI),它包括菜单、工具栏、滚动条和对话框它包括菜单、工具栏、滚动条和对话框中的按钮等元素。这些元素都是被绘制中的按钮等元素。这些元素都是被绘制出来的。出来的。l 当程序第一次显示窗口时,需要第一当程序第一次显示窗口时,需要第一次绘制窗口的内部或客户区。客户区是次绘制窗口的内部或客户区。客户区是由窗口的边界、标题栏以及框架元素包由窗口的边界、标题栏以及框架元素包围的空间。围的空间。l在窗
30、口的任何部分被破坏或无效时,需要重新绘制在窗口的任何部分被破坏或无效时,需要重新绘制它们。例如,当其它窗口覆盖在应用程序的窗口上,它们。例如,当其它窗口覆盖在应用程序的窗口上,然后又离开。然后又离开。Windows不会保存窗口中的图像,由不会保存窗口中的图像,由于它不能自己重新绘制所有的部分,因此程序需要于它不能自己重新绘制所有的部分,因此程序需要重新绘制窗口的内容。重新绘制窗口的内容。l在要求重新绘制时,一般由在要求重新绘制时,一般由Windows负责绘制窗口负责绘制窗口的框架,而程序员负责绘制客户区。与客户区对应的框架,而程序员负责绘制客户区。与客户区对应有一个有一个Windows对象称为
31、设备环境(对象称为设备环境(Device Context,通常缩写为,通常缩写为DC)。)。4对象与句柄对象与句柄 对设备环境的访问是通过对设备环境的访问是通过Windows返回的返回的句柄进行的。用于描述设备环境句柄的变量类句柄进行的。用于描述设备环境句柄的变量类型是型是HDC。事实上,事实上,Windows提供了许多种类提供了许多种类型的句柄(窗口、字体等)。每种对象都有一型的句柄(窗口、字体等)。每种对象都有一个相应的句柄类型,例如个相应的句柄类型,例如HWND和和HFONT。常常见的见的Windows对象的句柄如下:对象的句柄如下: Windows对象对象相关句柄相关句柄 设备环境设备
32、环境 HDC 窗口窗口 HWND 菜单菜单 HMENUl光标光标HCURSORl画笔画笔HPENl画刷画刷HBRUSHl字体字体HFONTl图标图标HICONl位图位图HBITMAPl调色板调色板 HPALETTEl文件文件HFILEl区域区域HRGNl加速键表加速键表HACCEL 实际上,句柄本质上就是一个指针,但它和实际上,句柄本质上就是一个指针,但它和通常意义上的指针是有区别的。通常意义上的指针是有区别的。 在在windowswindows里,句柄用来指向一些较大的对象,里,句柄用来指向一些较大的对象,hWndhWnd、hDchDc等等,由于这些对象占用内存较大,有等等,由于这些对象占用
33、内存较大,有时难免会被挪动,因此所谓时难免会被挪动,因此所谓“指向指向”它们的句柄它们的句柄并不直接指向它们,而是通过另一个指针来间接并不直接指向它们,而是通过另一个指针来间接地指向,这样才能保证某一个句柄值在其生命期地指向,这样才能保证某一个句柄值在其生命期内保持不变。内保持不变。l在在MFC中,有许多函数是中,有许多函数是DCC类的成员函数。类的成员函数。DCC指设备环境类指设备环境类 (Device Context Class)。Windows中负责设备环境和绘制函数的部分中负责设备环境和绘制函数的部分称为图形设备接口称为图形设备接口 (Graphics Device Interface
34、,GDI)。l Polygon用几个点绘制多边形用几个点绘制多边形l Pie绘制饼图绘制饼图l Rectangle在指定的坐标处绘制矩形在指定的坐标处绘制矩形l Ellipse在指定的坐标处绘制椭圆在指定的坐标处绘制椭圆l GDI是一个完整的两维绘制系统,是一个完整的两维绘制系统,它具有设备环境、绘制函数以及用它具有设备环境、绘制函数以及用于测量和定位所绘制的图像的几种于测量和定位所绘制的图像的几种坐标系统。坐标系统。5坐标系坐标系 要为绘制和其它任务指定位置,需要坐要为绘制和其它任务指定位置,需要坐标系统。标系统。 Windows提供了提供了8种不同的坐标系,每种不同的坐标系,每种都有各自的
35、用途。种都有各自的用途。 Windows默认的坐标系原点在窗口客户默认的坐标系原点在窗口客户区的左上角,区的左上角,x向右为正,向右为正,y向下为正,没有向下为正,没有负的坐标。负的坐标。13.2.3 Windows消息映射及处理消息映射及处理 我们知道,用我们知道,用C+编写编写MS-DOS程序时一程序时一定要有一个定要有一个main( )函数,程序由函数,程序由main( )函数函数开始运行,其它函数都是由开始运行,其它函数都是由main( )函数调用的。函数调用的。 同理,同理,Windows程序需要有一个程序需要有一个WinMain( )函数函数 (如果应用如果应用MFC类库,类库,W
36、inMain( )函数就被隐蔽了函数就被隐蔽了),该函数主要是建,该函数主要是建立应用程序的主窗口。立应用程序的主窗口。lWindows程序与程序与MS-DOS程序的根本差程序的根本差别在于:别在于:lMS-DOS程序是通过调用操作系统的功程序是通过调用操作系统的功能来获得用户输入的,能来获得用户输入的,l而而Windows程序则是通过操作系统发送程序则是通过操作系统发送的消息来处理用户输入的,程序的主窗的消息来处理用户输入的,程序的主窗口中需要包含处理口中需要包含处理Windows所发送消息所发送消息的代码。的代码。l在在Windows程序中,管理消息的方式通常是这样程序中,管理消息的方式通
37、常是这样的:的:l当发生某个消息当发生某个消息(比如用户移动了鼠标和按下键盘比如用户移动了鼠标和按下键盘等等) 后,该消息进入消息队列,操作系统根据消息后,该消息进入消息队列,操作系统根据消息提供的信息决定由哪个应用程序来处理。提供的信息决定由哪个应用程序来处理。l该应用程序依照一定的方式查找应用程序中各个类该应用程序依照一定的方式查找应用程序中各个类的消息映射的消息映射 (一组宏,这些宏用来确定某个消息及一组宏,这些宏用来确定某个消息及相应的处理程序的对应关系相应的处理程序的对应关系),找到处理程序,然,找到处理程序,然后由处理程序执行。后由处理程序执行。 WindowsWindows程序要
38、处理的消息种类如下:程序要处理的消息种类如下: Windows消息。消息。该类消息以该类消息以WM_开头开头(WM_COMMAND例外),通常由窗口和视图来处理。例外),通常由窗口和视图来处理。这些消息常常带有参数,用于决定处理该消息的方式。这些消息常常带有参数,用于决定处理该消息的方式。 由控件和其它子窗口发送给父窗口的由控件和其它子窗口发送给父窗口的WM_COMMAND消消息。息。这些消息中包括这些消息中包括EN_CHANGE通知码。如当用户在编通知码。如当用户在编辑框中键入文本或进行修改时,就会向系统发送一个带辑框中键入文本或进行修改时,就会向系统发送一个带EN_CHANGE通知码的通知
39、码的WM_COMMAND消息。消息。 来自于用户界面对象的来自于用户界面对象的WM_COMMAND消息。消息。这些用这些用户界面对象包括菜单、工具栏按钮和快捷键。户界面对象包括菜单、工具栏按钮和快捷键。13.3 MFC库简介库简介l类库是一个可以在应用程序中使用的相互类库是一个可以在应用程序中使用的相互关联的类的集合。关联的类的集合。lMFC库库Microsoft 基本类库是一个基本类库是一个Windows应用程序框架,它定义了应用程应用程序框架,它定义了应用程序的结构,并实现了标准的用户接口:序的结构,并实现了标准的用户接口: 管理窗口、菜单、对话框,实现基本的管理窗口、菜单、对话框,实现基
40、本的输入输入/输出和数据存储。输出和数据存储。l MFCMFC是用来编写是用来编写WindowsWindows应用程序的应用程序的C+C+类集,类集,该类集以层次结构组织起来,其中封装了大部该类集以层次结构组织起来,其中封装了大部分分Windows APIWindows API函数和函数和WindowsWindows控件,它所包控件,它所包含的功能涉及到整个含的功能涉及到整个WindowsWindows操作系统。操作系统。l MFCMFC不仅为用户提供了不仅为用户提供了 WindowsWindows图形环境下图形环境下应用程序的框架,而且还提供了创建应用程序应用程序的框架,而且还提供了创建应用
41、程序的组件。的组件。 MFCMFC为我们提供了大量可重用代码,隐藏了程为我们提供了大量可重用代码,隐藏了程序设计中的许多复杂工作,这也是面向对象方法的序设计中的许多复杂工作,这也是面向对象方法的典型体现。典型体现。 MFC (Microsoft Foundation Class Library)中中的各种类结合起来构成了一个应用程序框架,它的的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立目的就是让程序员在此基础上来建立Windows下的下的应用程序。应用程序。 总体上,总体上,MFC框架定义了应用程序的轮廓,并提框架定义了应用程序的轮廓,并提供了用户接口的标准实现
42、方法,供了用户接口的标准实现方法,程序员所要做的就是程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这通过预定义的接口把具体应用程序特有的东西填入这个轮廓。个轮廓。 Microsoft Visual C+提供了相应的工具来完成这提供了相应的工具来完成这个工作:个工作:AppWizard可以用来生成初步的框架文件可以用来生成初步的框架文件(代码和资源等);(代码和资源等);资源编辑器资源编辑器用于帮助直观地设计用于帮助直观地设计用户接口;用户接口;ClassWizard用来协助添加代码到框架文件;用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。最后,编译
43、,则通过类库实现了应用程序特定的逻辑。MFCMFC还很好地保持了程序的向下兼容性还很好地保持了程序的向下兼容性是用来编是用来编写写WindowsWindows应用程序应用程序的的C+C+类集类集以层次结构组织以层次结构组织封装了大部分封装了大部分APIAPI函数函数提供了图形环境下应用程序的框架提供了图形环境下应用程序的框架提供了创建应用程序的组件提供了创建应用程序的组件提供了大量的基类供程序员根据不同的应用环境进行扩充提供了大量的基类供程序员根据不同的应用环境进行扩充允许在编程过程中自定义和扩展应用程序中的类允许在编程过程中自定义和扩展应用程序中的类较好的移植性,较好的移植性,可移植于众多的
44、平台可移植于众多的平台MFCMFCMFCMFC类的组织结构类的组织结构 MFC库中的类按层次关系划分类:库中的类按层次关系划分类:(1)根类:)根类:CObject(2)应用程序体系结构类)应用程序体系结构类(3)窗口、对话框和控件类)窗口、对话框和控件类(4)绘图和打印类)绘图和打印类(5)简单数据类型类)简单数据类型类(6)数组、列表和映射类)数组、列表和映射类(7)文件和数据库类)文件和数据库类(8)Internet和网络工作类和网络工作类(9)OLE类类(10)调试和异常类)调试和异常类对象连接与嵌入对象连接与嵌入1 1、MFCMFC中多数类和用户中多数类和用户自定义子类的根类,是自定义子类的根类,是抽象基类。它提供了许抽象基类。它提供了许多编程所需的公共操作多编程所需的公共操作对象的建立对象的建立对象的删除对象的删除运行时信息运行时信息对象诊断输出对象诊断输出串行化支持串行化支持应用程序和线程支持类应用程序和线程支持类命令相关类命令相关类文档类文档类文档模板类文档模板类视类视类( (体系结构体系结构) )框架窗口框架窗口( (体系结构体系结构) )2 2、应用程序应用程序体系结构类体系结构类3 3、窗口、窗口、对话框和控对话框和控件类件类框架窗口类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公路建筑材料质检合同范例
- 北京出租合同范例
- 财产抵押担保借款合同范本
- 冷库安装合同范例
- 公厕维修施工合同范本
- 公司工程装修合同范例
- 个人广告采购合同范本
- 全屋定制套餐合同范例
- 2025年度工伤事故责任认定与赔偿金支付协议书
- 包子配送合同范本
- 《消防机器人相关技术研究》
- 2024年考研政治真题及答案
- 【直播薪资考核】短视频直播电商部门岗位职责及绩效考核指标管理实施办法-市场营销策划-直播公司团队管理
- 项目设计报告范文高中
- 《千年古村上甘棠》课件
- 部编版小学语文二年级下册电子课文《小马过河》
- 《医疗机构工作人员廉洁从业九项准则》专题解读
- 爱车讲堂 课件
- 成立商会的可行性报告5则范文
- 市场监督管理局反电信网络诈骗工作总结
- 2024-2030年中国免疫细胞存储行业发展模式及投资战略分析报告
评论
0/150
提交评论