visual c++实用教程 第4章:windows程序设计的基本概念.ppt
《visual c++实用教程 第4章:windows程序设计的基本概念.ppt》由会员分享,可在线阅读,更多相关《visual c++实用教程 第4章:windows程序设计的基本概念.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Visual C+Visual C+第第4 4章章 WindowsWindows程序设计的基本概念程序设计的基本概念教学要点 本章内容主要包括Windows应用程序的特点,VC两种编程模式都要用到的基本概念及利用API编写简单的Windows程序的方法与步骤。要求了解回调函数和图形设备接口概念、VC程序的命名规则和消息驱动机制,掌握窗口、实例、句柄、资源的概念,熟悉Windows图形用户界面中的元素,熟练掌握掌握建立Win32应用程序的步骤和WinMain()函数形参的含义。4.1 4.1 Win 32Win 32编程特点编程特点4.2 4.2 WindowsWindows程序用到的基本术语程
2、序用到的基本术语 4.3 4.3 开发开发WindowsWindows程序基本步骤程序基本步骤 习题习题 Visual C+Visual C+4.1.1 Windows运行机制运行机制消息驱动消息驱动4.1.2 应用程序与应用程序与Windows操作系统紧密相连操作系统紧密相连4.1.3 图形界面图形界面4.1.4 Windows基本数据类型基本数据类型4.1.5 VC程序中的命名规则程序中的命名规则4.14.1 Win 32Win 32编程特点编程特点Visual C+Visual C+n消息驱动,在别的程序设计语言中又叫事件驱动。在执行过程中,如果用户需要输入什么参数或用户需要作出选择,程
3、序将等待用户的输入。只有用户提供了足够的数据程序才能继续进行下去,否则它将一直等待下去,应用程序不会自己选择其它的途径或完成其它的功能,用户也不能干预程序的运行过程。n在消息驱动的程序结构中,程序控制流程是由实际运行时各种事件的实际发生来触发,而事件的发生可能是随机的、不确定的,并没有预先的顺序。消息驱动是一种面向用户的程序设计方法,在程序设计过程中除了完成所需要的程序功能之外,更多的是要考虑用户可能的各种输入消息,并有针对性地设计相应的处理程序。消息驱动程序设计还是一种被动式的程序设计方法,程序开始运行时,处于等待消息状态,当取得消息后就对其作出相应反应,处理完毕后又返回等待消息的状态。消息
4、驱动的程序就是一个不断产生消息和处理消息的过程是一个更加模块化、更加独立的程序。4.1.1 Windows运行机制运行机制消息驱动消息驱动Visual C+Visual C+4.1.2 应用程序与应用程序与Windows操作系统紧密相连操作系统紧密相连利用VC进行Windows应用程序开发的一个显著特点显著特点就是,应用程序与操作系统的联系非常密切。对操作系统比较熟悉的人编制程序相对来说就轻松一些,反之,学会利用VC进行Windows应用程序开发的人,往往会对操作系统有一个清晰的认识。设计设计C C语言的目的就是进行操作系统语言的目的就是进行操作系统的开发的开发,C+的发明者Bijarne S
5、troustrup就是进行操作系统研究的一个学者。在Windows环境下开发程序时,绝对不能忽视操作系统所起的作用,因为我们时时刻刻在与操作系统打交道。最明显和操作系统打交道的例子就是消息传递。最明显和操作系统打交道的例子就是消息传递。消息与事件紧密相连,事件是源,消息是果,消息是一个事件的代表,程序运行过程中的任何一个事件都产生一个消息,比如比如按了键盘的某个键就会产生键盘的消息。Visual C+Visual C+WindowsWindows程序设计是消息驱动的,消息传递是它的核心,程序设计是消息驱动的,消息传递是它的核心,而消息管理是由而消息管理是由 WindowsWindows完成的,
6、应用程序要获得消完成的,应用程序要获得消息就要从操作系统中获得。息就要从操作系统中获得。应用程序有两种两种获得消息的方式:回调函数一经设计好,就成了Windows系统的扩展,就会在发生别的事件时,由操作系统自动调用该回调函数。在应用程序的任何地方找不到明显调用该函数的地方,用DOS编程观点来看,似乎此函数并没有用到,事实上回调函数不仅用到了,而且起了很大作用,正是通过它,应用程序才获得了消息,才知道当前发生了什么事件,才根据不同的事件采取不同的处理措施。4.1.2 应用程序与应用程序与Windows操作系统紧密相连(续)操作系统紧密相连(续)1.1.应用程序调用应用程序调用WindowsWin
7、dows提供的获取消息函数,如提供的获取消息函数,如GetMessageGetMessage()();2.2.由由WindowsWindows调用程序员提供的一种特殊函数调用程序员提供的一种特殊函数回调函数。回调函数。Visual C+Visual C+4.1.3图形界面图形界面 WindowsWindows支持丰富的图形用户界面对象,包括窗口、图支持丰富的图形用户界面对象,包括窗口、图标、对话框等。标、对话框等。1 1窗口窗口窗口是Windows图形界面中最重要的部分,是屏幕上与一个应用程序相对应的矩形区域,关闭了一个窗口后,相应的应用程序就被关闭。图图4.14.1是一个典型的窗口外观。2
8、2客户区客户区 客户区是窗口中最大的一块空白矩形区域,它是用户与系统进行交互的主要区域,一般用于显示应用程序的输出。3 3标题栏标题栏 标题栏位于窗口顶部,其中显示的文本一般用于标注应用程序的名称。标题栏的颜色反映该窗口是否是一个活动窗口。标题栏是属于非客户区域。Visual C+Visual C+4 4菜单栏菜单栏 菜单栏用户最熟悉,它位于标题栏的下方,横跨窗口,上面列出了应用程序支持的大部分功能。5 5图标图标 一个用于提醒用户的小小图像,它代表一个应用程序。当一个应用程序最小化时,就呈现为一个图标。6 6光标光标 Windows光标是显示在屏幕上的一个位图,用于响应鼠标或其它定位设备的操
9、作。在应用程序中,常常通过改变光标形状来指出程序的操作状态。7 7工具栏工具栏 工具栏位于菜单栏下方,上面的位图按钮代表最常用的命令。让鼠标在某个按钮停一会,就会在按钮下方出现一个黄色的小窗口,里面显示该按钮的简单提示信息。4.1.3 图形界面图形界面(续续)Visual C+Visual C+8 8状态栏状态栏 状态栏位于窗口底端,用于输出菜单的详细说明和其它一些提示信息。9 9对话框对话框 对话框是一种特殊窗口,主要用于接收用户输入和输出。图图4.14.1显示了一个Word中的“查找与替换”对话框。一般在选择菜单名称后面带有省略号()的菜单项时会弹出一个对话框。1010控件控件 对话框中包
10、含的许多小窗口都是控件。如“查找与替换”对话框上的“查找内容(N)后就是一个编辑框控件,“取消”操作就是一个按钮控件。4.1.3 图形界面图形界面(续续)Visual C+Visual C+图图4.1 4.1 窗口外观窗口外观Visual C+Visual C+4.1.4 Windows基本数据类型基本数据类型 在标准的C/C+语言中,int、char、float、double都是常见的数据类型,而在32位Windows的C/C+开发平台中,为了满足数据定义需要,又添加了一系列新的数据类型。表表4.14.1列出了较为常见的数据类型,大体包括了字符型、整型、浮点型、布尔型、指针型以及Window
11、s应用程序所特有的句柄型,表示指针型的数据类型往往以P或LP作为前缀,而句柄型则总是冠以H。在Windows应用程序中,不可避免地要使用各种各样的句柄。简单地说,它是用来标识诸如菜单、图标、窗口、内存块、输出设备等信息的,通过它可以访问各种资源。句柄并非对象所在的地址指针,它是作为系统内部表的索引值来使用的。譬如说,一个窗口打开之后,对应内存中的一个内存块,这个窗口所在的内存块地址往往会由操作系统作动态调整,但其句柄却不会随之变化,我们不必关心其地址的变化,而是简单地通过作为窗口标识的句柄来访问这个窗口。如果该应用程序有几个副本在同时运行,那么每个这种窗口都会有一个各不相同的句柄。除了前面介绍
12、的基本数据类型外,前面章节中所介绍的MFC中的CString、CTime、CPoint、CSize、CRect等都是经常用到的数据类型。Visual C+Visual C+表表4.1 基本数据类型基本数据类型Visual C+Visual C+表表4.1基本数据类型基本数据类型(续(续)HACCEL加速键表句柄HANDLE对象句柄HBRUSH画刷句柄HDC设备描述表句柄HFILE文件句柄HINSTANCE实例句柄HMENU菜单句柄HWND窗口句柄LONG32位无符号数Visual C+Visual C+表表4.1基本数据类型基本数据类型(续)(续)Visual C+Visual C+*4.1.
13、5 VC程序中的命名规则程序中的命名规则1 1匈牙利命名规则匈牙利命名规则 匈牙利命名法成为大家一致使用的变量名约定,是事实上的标准,它的名字来源于它的匈牙利籍开发者,Microsoft程序员Charles Simonyi。匈牙利命名匈牙利命名规则建议规则建议变量名称以一个或多个小写字母开头,这些小写字母用以标识其变量类型,类型标识字母的下一个字母一般采用大写。类型定义使用相同的类型标识符作为前缀,唯一不同的是,类型定义名称一般全部使用大写。例如,变量iNum自身名称就说明它为整型,变量hWnd说明其为指向应用程序窗口的句柄,变量lpszString表示它是一个指向以NULL结束的字符串的长指
14、针。表表4.24.2列出了一般的匈牙利命名原则。Visual C+Visual C+表表4.2 匈牙利命名规则约定匈牙利命名规则约定Visual C+Visual C+2.2.其它前缀约定其它前缀约定 除 了 匈 牙 利 命 名 规 则 使 用 的 前 缀 外,Windows Application FrameWorks(AFX)和MFC对象类使用的其它一些前缀在表表4.34.3中列出。在这组前缀中,只有两个C类前缀和m_成员变量可能在自己写的程序代码中出现,其余前缀主要用于MFC/Windows库中。3.3.AFXAFX和和AppWizardAppWizard前缀。前缀。VC AppWiza
15、rd和ClassWizard不但能生成大量有用代码帮助你链接已有代码和对话框资源元素,而且还能产生使用标准符号前缀的标识符。表4.4应用程序框架符号前缀*4.1.5 VC程序中的命名规则程序中的命名规则(续)续)Visual C+Visual C+表表4.3 4.3 AFXAFX和和MFCMFC前缀前缀Visual C+Visual C+表表4.4 应用程序框架符号前缀应用程序框架符号前缀Visual C+Visual C+4.2 4.2WindowsWindows程序用到的基本术语程序用到的基本术语 4.2.1 窗口窗口 4.2.2 实例实例 4.2.3 句柄句柄 4.2.4 资源资源 4.
16、2.5 窗口函数窗口函数 4.2.6 图形设备接口图形设备接口 4.2.7 回调函数回调函数Visual C+Visual C+4.2.1 窗窗 口口 从表面理解,窗口无非是一个矩形区域。从程序运行的内存组织角度看,窗口对应的是一个数据结构WNDCLASS,从用户的角度看,窗口是用户输入输出数据的一个接口,通过它,Windows应用程序才能取得外部的数据并把处理后的数据显示在屏幕矩形区域中。从程序的内部处理过程看,每一个窗口对应着一个应用程序的消息处理队列,应用程序主要通过窗口函数来对用户的输入进行处理。可见窗口是Windows应用程序基本操作单元,是应用程序与用户之间交互的接口环境,也是系统
17、管理应用程序的基本单位。编写一个Windows的应用程序首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口和窗口之间、窗口和系统之间进行数据处理和数据交换的过程。作为一个Windows程序设计人员,我们首先要搞清Windows这个数据结构。Visual C+Visual C+4.2.2 实例实例 一一个个实实例例代代表表一一个个可可执执行行程程序序在在内内存存中中的的拷拷贝贝。在Windows系统中,可执行程序的每次运行都代表完全独立的进程,各个进程都有自己的虚拟地址空间。若一个应用程序执行许多次,在内存中就有多个程序的拷贝,也可以说是一个应用程序在内存中有多个实例。应用程序的
18、实例句柄对于管理整个应用程序的资源很重要,因此我们常常在在WindowsWindows程序的入口程序的入口WinMainWinMain()()处将实例句柄保存在全局变量中。处将实例句柄保存在全局变量中。Visual C+Visual C+4.2.3句柄句柄句柄这个概念在Windows的程序设计中常常碰到。WindowsWindows对对绝大多数对象的引用都是通过句柄来进行的。绝大多数对象的引用都是通过句柄来进行的。在Windows环境中,句柄可以用来标识模块、任务、实例、文件、内存块、菜单、控件、字体、资源、,包括图标、光标、字符串、GDI对象,包括位图)、画刷、元文件、调色板、画笔、区域以及
19、设备描述表。Windows程序并不是用物理地址来标识一个内存块、文件、任务或动态装入模块的,相反,Windows API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。句柄是内部表格的索引值,Windows通过句柄到内部表格中去存取相关信息。因此应用程序只能处理到句柄的层次,并不能直接获取表格中的数据。表表4.54.5是常见的句柄类型及其含义。Visual C+Visual C+表表4.5 常见的句柄类型及其含义常见的句柄类型及其含义Visual C+Visual C+4.2.4 资源资源一个Windows程序,往往有菜单、工具条、对话框、位图、图标、加速键、字符串等
20、,这些元素都被称为资源资源。应用程序不仅可以使用操作系统所提供的资源,而且可以在VC开发环境中利用相应的资源编辑器建立自己的资源。应用程序的资源被定义在.RC文件中,资源可以预先编辑、独立编译,最后与可执行模块链接在一起,形成可独立可独立执行的执行的.EXEEXE文件文件或动态链接库文件动态链接库文件.DLLDLL。当应用程序需要这些资源时,可以利用WindowsWindows的的APIAPI函数函数将这些资源调入。可见,Windows应用程序的资源是自己携带的,这要比将资源作为外部文件方便的多。由于资源与程序代码是分离的,“招之即来,挥之即去”,当使用时才调入内存,这减少了程序运行时对内存的
21、消耗量。Visual C+Visual C+4.2.5 窗口函数窗口函数 由于窗口是应用程序与用户交互的接口,当窗口接受到输入时,必定交给某个函数加以处理,这个负责处理消息的函数就是窗口函数,它决定了当一个消息被接收时所采取的动作。窗窗口口函函数数是是一一个个对对每每一一个个消消息息利利用用switchswitch语语句句进进行行处处理理的的函函数数,它它是是WindowsWindows消消息息驱驱动动机机制制的的发发动动机机。下一节以一个具体的实例来详细解释。Visual C+Visual C+4.2.6 图形设备接口图形设备接口 WindowsWindows应应用用程程序序的的全全部部输输
22、出出(包包括括显显示示和和打打印印)都都必必须须通通过过图图形形设设备备接接口口(Graphic Graphic Device Device InterfaceInterface,简简称称GDIGDI)中中的的函函数数来来完完成成,GDIGDI是是WindowsWindows系系统统重重要要组组成成部部分分,负负责责系系统统与与用用户户或或绘绘图图程程序序之之间间的的信信息息交交换换,并并控控制制在在输输出出设设备备上上显显示示图图形形或或文文字字。其最大作用就是将程序员与具体的物理设备相隔离,使得程序员没有必要考虑具体设备的操作细节(如显示缓存的地址、打印机的端口等),无论是使用显示还是打印
23、,使用的都是同一个API函数。通俗的来说,我们可以把把GDIGDI看看作作一一个个大大的的绘绘图图工工具具箱箱,所所有有在在窗窗口口上上所所绘绘制制的的东东西西,都都必必须须使使用用工工具具箱箱中中的的东东西西,即即GDIGDI中中函函数数。学习GDI,关键是要搞清楚这些函数的分类及其用法。Visual C+Visual C+4.2.7回调函数回调函数回回调调函函数数,顾顾名名思思义义,就就是是写写好好了了等等着着别别人人来来调调用用的的函函数数。这些函数的原型都是由调用者自己定义好的,使用的时候,只要按照原型定义一个函数,然后将函数指针传递过去就行了。它们只能通过Windows操作系统来调用
24、,这些函数我们可以根据自己的需要设计,但不能直接调用它们。回调函数必须严格地按回调函数必须严格地按WindowsWindows系统的规定进行说明和定系统的规定进行说明和定义。义。前面所所的“窗口函数”就是一个典型的回调函数,当注册窗口类时,要将函数地址告诉Windows,Windows通过调用该窗口函数来让窗口处理消息。当发送消息给程序时,Windows调用此函数进行消息的处理。窗口函数窗口函数调用约定、返回值以及参数都是固定的,程序员必须按调用约定、返回值以及参数都是固定的,程序员必须按其规定进行才能正常工作。其规定进行才能正常工作。Visual C+Visual C+4.34.3 开发开发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- visual c+实用教程 第4章:windows程序设计的基本概念 c+ 实用教程 windows 程序设计 基本概念
限制150内