⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter2.txt

📁 系统全面的介绍WINDOWS中游戏的编程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
  第二章 windows编程基础
    第一节 引言
    为了跟上潮流,我们抛弃了已快被淘汰的DOS操作系统,所有的讲解和例程都是基于微
软的Windows操作系统的。考虑到很多的用户并没有Windows编程基础,所以我们设置了这
一专门讲述、讨论Windows的术语、概念的部分,以使这部分用户能较快地理解和掌握我们
所讲述、讨论的编程思想和编程方法。这一部分中主要讲述的是Windows中十分基本的东西
,所以用户应根据自己的情况有选择的进行学习。好!现在就让我们进入艰苦而又精彩有
趣的游戏编程之路吧! 
    第二节 windows的介绍
    Windows应用程序可以采用面向过程的实现方法。也可以使用面向对象的结构。所有的实现方法都集成了点击控制和弹出菜单,能够运行特别为Windows编写的应用程序。
    Windows是一种基于图形界面的多任务操作系统。为这个环境开发的程序(那些专门为Windows设计的)有着相同的外观和命令结构。对用户来说,这使得学习使用Windows应用程序变得容易了。为了帮助开发Windows应用程序,Windows提供了大量的内建函数以方便地使用弹出菜单、滚动条、对话框、图标和其他一些友好的用户界面应该具有的特性。
  Windows运行应用程序以硬件无关的方式来处理视频显示、键盘、鼠标、打印机、串行口以及系统时钟。
    最值得注意的Windows特性就是其标准化的图形用户界面。统一的界面使用图片或图标来代表磁盘驱动器、文件、子目录以及其它操作系统的命令和动作。 统一的用户界面也为程序员带来了好处。例如,你可以很方便地使用常见菜单和对话框的内建函数。所有的菜单都具有相同风格的键盘和鼠标接口,因为是Windows而不是程序员在实现它。
    Windows的多任务环境允许用户在同一时刻运行多个应用程序或同一个应用程序的多个实例。一个应用程序可能处于激活状态。激活的应用程序是指它正接收用户的输入。因为每一个瞬间仅有一个程序能够被处理,因此同一时间也只能有一个应用程序处于激活状态。但是,可以有任意个数的并行运行的任务。
  

    第三节 windows的基本概念
    Windows消息和面向对象编程
  Windows实现了一种仿OOP(面向对象编程)环境。Windows下的消息系统负责在多任务环境中分解信息。从应用程序的角度来看,消息是关于发生的事件的通知。用户可以通过按下或移动鼠标来产生这些事件,也可以是通过改变窗口大小或选择一个菜单项等。这些事件也可以由应用程序本身产生。Windows本身也能产生消息。如“关闭Windows”消息,Windows通过这个消息来通知所有的应用程序,Windows将被关闭。
  内存管理
  在Windows系统中系统内存是最重要的共享资源之一。当同一时刻有多个应用程序在运行时,为了不耗尽系统资源,每个应用程序必须合作以共享内存。同时,当启动新的程序和关闭老的程序时,内存会变得碎片化。通过移动内存中的代码和数据块,Windows能够使内存空闲空间连起来。在Windows下也有可能超量使用内存。例如,应用程序可以比内存容量大。Windows能够废弃当前不使用的代码,在以后需要时再从应用程序中将之读入内存。Windows应用程序可以共享可执行文件中的例程。包含可共享的例程的文件称为动态链接库(DLL)。Windows包括了运行时将DLL例程链入程序的机制。
    硬件无关性
  Windows同时提供了硬件或设备无关性,使你免于在生成程序的时候不得不考虑所有可能使用的显示器、打印机或输入设备。在Windows下面,每种硬件设备的驱动程序只编写一次。硬件无关性使编程对应用程序开发者来说更为简单。应用程序与Windows而不是各种设备打交道。
    动态键接库
  动态键接库提供了更多的Windows功能。它们通过一个有力而灵活的图形用户界面增强了基本的操作系统。动态键接库包括一些预定义的函数,它们可以在一个应用程序被调入时与之键接(动态地),而不是在应用程序被创建时(静态地)。动态键接库使用DLL后缀。函数库将每一个程序员从重复开发诸如读取字符或格式化输出之类的通用例程中解放出来。程序员可以方便地构造它们自己的库以包含更多的功能,比如改变字体或检验文本。把函数变为通用工具减少了冗余设计,这是OOP的一个关键特性。
       Windows的库是被动态地键接的。或者说,键接器并不把函数拷贝到程序的可执行文件中去。相反,当程序运行时,它产生对库函数的调用。自然,这样做节约了内存。不管有多少应用程序在运行,在RAM中总是只有库的一份考贝,而这个库可以被共享。
    Windows的可执行文件格式 
    Windows具有一种新的可执行文件的格式,称为New Excutable格式。它包括新型的文件头,能够保存有关DLL函数的信息。
       
  第四节 windows的窗口
  Windows的窗口
  窗口看起来就是显示设备中的一个矩形区域,它的外观与特定的应用程序无关,可是,对于一个应用程序来说,窗口是屏幕上应用程序能够直接控制的矩形区域。应用程序能够创建并控制主窗口的一切,如大小和形状。当用户启动一个程序时,一个窗口就被创建了。用户每次单击窗口,应用程序作出响应。关闭一个窗口会使应用程序结束。多窗口带给用户Windows的多任务能力。通过将屏幕分为不同的窗口,用户能够使用键盘或鼠标选择一个并行运行的应用程序,以此对多任务环境中的一个特定程序进行输入,Windows截取了用户的输入并分配必要的资源(例如微处理器)。
Windows的布局
  所有的Windows应用程序都具有诸如边框、控制菜单、About对话框之类的共同特征。这些特征使得各个Windows应用程序非常类似。
边框
    Windows的窗口被边框所包围。边框由围出窗口的线条组成。对于新手而言,边框看起来仅仅是为了将一个应用程序的屏幕视口与其它的区别开。但是,对于熟练者,边框有着不同的作用。例如,如果将鼠标指针放在边框上并按下鼠标的左键,用户就可以改变窗口的大小。
标题条
    应用程序的名字显示在窗口顶部的标题条中。标题条总是在相关窗口顶部的中央。标题条非常有用,它可以帮助你记住正在运行哪个应用程序。活动应用的标题条以不同于非活动应用程序的颜色显示。
控制图标
    控制图标是每个窗口左上方的小图片,每个应用程序都使用它。在控制图标上单击鼠标键会使Windows显示系统菜单。
系统菜单
    当用鼠标单击控制图标时就打开了控制菜单。它提供了诸如Restore,Move,Size,Minimize,Maximize以及Close这样的标准操作。
最小化图标
    每个Windows 95或Windows NT应用程序都在窗口的右上角显示三个图标。最左边的图标是一段短下划线,这就是最小化图标。它可以使用程序被最小化。
最大化图标
    最大化图标是三个图标中中间的那一个,看起来象两个小窗口。使用最大化图标可以使用应用程序占满整个屏幕。如果选择了这个图标,其它应用程序窗口都会被盖住。
垂直滚动条
    如果有必要,应用程序可以显示一个垂直滚动条。垂直流动条显示在应用程序窗口的右边,在两端有两个方向相反的箭头。它还有一个着色的棒和一个透明的窗口块。后者被用于显示当前显示内容与整个文档(着色的棒)的关系。你可以用滚动条来选择显示哪一页。一般在任何一个箭头上单击一下会使显示内容移动一行。单击向上箭头下方的窗口块并拖动它会使屏幕输出快速更新到应用程序屏幕输出的任意位置。
水平滚动条
    也可以显示一个水平滚动条。水平滚动条显示在窗口的底部,具有与垂直滚动条类似的功能。你用它来选择要显示哪些列。一般在任何一个箭头上单击一个会使显示内容移动一列。单击向左箭头右边的窗口块并拖动它会使屏幕输出快速更新到应用程序屏幕输出的任意位置。
菜单条
    一个可选择的菜单条可以显示在标题条的下方。通过菜单条来选择菜单和子菜单。这种选择可以通过用鼠标单击,也可以用热键组合来实现。热键组合经常是ALT与命令中带下划线的字母的组合,比如File命令中的“F”。
用户区
    通常用户区占据了窗口最大的部分。这是应用程序的基本输出区域。应当由应用程序来复杂管理用户区。另外,应用程序可以输出到用户区。

    第五节 windows的类
    窗口的基本组件有助于说明应用程序的外观。有的时候应用程序需要创建两个外观和表现都相似的窗口。Windows的Paint就是一个例子。借助于同时运行Paint的两个实例(或拷贝),Paint允许用户剪贴或拷贝图片的一部分。然后信息就可以从一个实例拷贝到另一个实例。Paint的每个运行实例的外观和表现都与其他的相同。这就需要每个实例创建自己的外观和功能类似的窗口。
    在这种情况下被创建的外观和功能都很类似的窗口被称为是属于同一个窗口类的。但是,你创建的窗口可以有不同的特征。它们可以有不同的大小,不同的位置,不同的颜色或不同的标题,也可以使用不同的光标。
    每个被创建的窗都基于一个窗口类。在用C语言开发撕于的基于传统的函数调用方式的应用程序中,一些窗口为在Windows应用程序初始化的进修注册。你的应用程序可以注册属于自己的窗口类。为了能够使几个窗口在同一个窗口类的基础上创建,Windows定义了一些窗口特征,如CreateWindows()的参数,另一些定义的窗口类的结构。当你注册一个窗口类的时候,这个类可以被Windows下运行着的任何程序所使用。对于使用MFC的应用程序来说,多数注册工作已经由预定义的对象完成了。
    具有相似的外观和表现的窗口可以被组合成一个类,以此来减少需要维护的信息。因为每个窗口类都有自己的可共享的类结构,不需要复制不必要的窗口类参数。同时,同类的两个窗口使用相同的函数以及相关的例程。这样可以节省时间和空间,因为不存在代码复制。

    第六节 windows中的面向对象编程
    在Windows下传统的C程序吸收了一些面向对象编程的特性。对象是一种包含数据结构和对这些数据结构进行操作的函数的抽象数据类型。而且,对象接收会引起它们不同动作的消息。
    比如,一个Windows的图形对象是可以被作为一个实体来操纵的一些数据的集合,对于用户它是可视界面的一部分。特别地,一个对象意味这数据和数据的功能。菜单、标题条、控制块以及滚动条等都是图形对象的例子。下一部分描述一些影响应用程序外观的新的图形对象。
    图标
  图标是用来使用记住特定操作、想法或产品的小图形对象。比如,一个电子表格程序被最小化时可以显示一个很小的柱状图以提醒用户这个程序还在运行之中。在柱状图上双击鼠标会使Windows激活这个应用程序。图标是非常有力的工具。它很适合用来引起用户的注意,比如在发出错误警告或者是向用户提供选择时。
    光标
  光标是Windows用来跟踪指点设备的运动的图形符号。这种图形符号可以改变形状以指明特定的Windows操作。比如,当标准的箭头光标变为沙漏光标时说明Windows正在执行一个命令,需要暂停。
    编辑光标
  应用程序在窗口中显示编辑光标以告诉用户在哪儿输入。编辑光标与其他屏幕符号显然不同,因为它是闪烁的。多数时候,鼠标输入与光标相连,而键盘输入与编辑光标相连。但是,可以用鼠标来改变编辑光标的输入点。
    消息框
  消息框是另一类Windows图形对象。消息框是一种包含标题、图标和消息的弹出式窗口。图(?)是关闭Windows Notepad程序时出现的一个标准的消息框。
  -------------------------------------------------------------------------
|                                                                          |  
    ------------------------------------------------------------------------
      Windows的对话框
  对话框与消息框相似的地方在于它也是一种弹出式窗口。但是对话框主要用于接受用户输入而不仅仅是显示一些输出。对话框允许应用程序接受输入,每次一个域或是一个框的内容,而不是每次一个字符。图(?)显示了一个典型的Windows对话框。对知框的图形设计由Windows为你自动完成。对话框的布局通常用编译器中的资源编辑器完成。
    -----------------------------------------------------------------------           
   |                                                                       |
    -----------------------------------------------------------------------      
    字体
  字体是一种图形对象或资源,它定义了完整的字符集合的字样。这些字符都有一个特定的大小和风格,可以使文本具有不同的外观。字样是字符的一种基本属性,它定义了字符的衬线和笔画宽度。
    位图
    位图是一种显示图片(按像素组织),存储于内存。当应用程序需要快速显示图片时可以使用位图。因为位图直接从内存中传送,所以它比用程序重新画出图片要快得多。位图有两个基本用途。首先,它可以在屏幕上显示图片。其次位图也用于创建刷子。刷子使你可以在屏幕上画出并填充对象。
  使用位图有两个缺点。首先,与其尺寸有关,位图会占据难以预估的大量内存。每个被显示的像素都要在内存中占据相应的空间。在彩色显示器上显示一个像素会比在单色显示器上占据更多的内存。在单色显示器上,只需一位(bit)就可以表示出像素的状态。可是在可以显示16种颜色的彩色显示器上,需要四位才能表示一个像素的特征。同样地,随着显示设备分辨率的增加,位图对内存的需求也增加了。位图的另一个缺点是它只包括静态的图片。比如,如果用位图来代表一辆汽车,就没有办法来访问图片的不同部分,如轮踏、顶盖、窗等。但是,如果汽车是有一系列基本绘图例程来生成的,应用程序就可以改变向这些例程传送的数据从而改变图片的不同部分。例如,应用程序可以修饰顶蓬线并把一辆轿车变为敞蓬车。
    画笔
  当Windows在屏幕上显示一个图形时,它使用当前画笔的信息。画笔用于画出线条或轮廊。画笔具有三个基本特征:线宽、线型(虚线、短线、实线)以及颜色。Windows永远保留着用于画白线和黑线的画笔,任何应用程序可以使用它。你也可以创建自己的画笔。
   刷子
  Windows用刷子来画出颜色并以预定义的样式来填充一个区域。刷子至少有8×8个像素大小。刷子有三个基本特征:样式和颜色。由于它们至少有8×8的大小,刷子被称作具有样式而不象画笔,称为线型。样式可以是纯的颜色,也可以是阴影线、斜线或其它用户自定义的组合 
  第七节 windows的消息
    Windows的消息
  在Windows中,应用程序并不直接写屏幕、处理硬件中断或直接对打印机输出。相反,应用程序使用合适的Windows函数或者等待一个适当的消息被发出。
  Windows消息系统负责在多任务环境中分派消息。从应用程序的角度来看,消息可以看作是发生的事件的通知,有些需要作出特定的反应,有些就不需要。这些事件可能由用户产生,比如按下了鼠标或移动了鼠标,改变了窗口的大小或者选择了一个菜单。同时,这些事件也可能由应用程序本身所产生。
  这个过程使你的应用程序必须完全面向消息处理。当接收到消息时,应用程序必须能激活并决定正确的动作,完成这个动作之后回到等待状态。
  通过检查消息的格式和来源,下一部分将更仔细地讨论消息系统。
消息的格式
  消息通知一个应用程序发生了一个事件。从技术上来讲,消息不仅仅是与应用程序相关,而且是与应用程序的某一特定窗口有关。因此,所有的消息都被发往窗口。
  在Windows下只有一个消息系统-即系统消息队列。但是,每个正在Windows下运行的应用程序都有它自己的消息队列。系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。应用程序的消息队列中存储了程序的所有窗口的全部消息。
  不管消息具有什么类型,它们都有四个参数:一个窗口句柄,一个消息类型,两个附加的32位参数。窗口消息中定义的第一个参数是消息所关联的窗口句柄。
  在编写Windows应用程序的时候经常使用句柄。句柄是一个唯一的数字,它被用于标识许多类型的对象,如菜单、图标、画笔和刷子、内存分配、输出设备甚至窗口实例。在Windows 95和Windows NT下面,程序的每个运行着的拷贝叫做实例。
  因为Windows 95和Windows NT允许你同时运行一个程序的多个实例,操作系统就有必要保持对这些实例的追踪。这是通过赋予每个运行实例一个唯一的实例句柄来实现的。
  实例句柄通常被用作一个内部维护着的表的索引。通过引用表中的元素而不是实际的内存地址,Windows 95和Windows NT可以动态地调整所有的资源,而只需在此资源所对应的表格位置中插入一个新的地址。
  根据一个应用程序的多个实例被处理的方式,内存资源由Windows 95和Windows NT保存。
  应用程序的实例具有很重要的作用。应用程序的实例定义了程序的函数所需的所有对象。这包括控件、菜单、对话框以及更多的新Windows类。
  消息中的第二个参数是消息类型。这是在Windows独有的一些头文件中定义的标识符。这些头文件可以通过WINDOWS.H来使用。在Windows下,每个消息由两个字符的助记符开始,跟着是下划线,最后是一个描述符。
  最后的两个参数提供了解释消息所需的附加信息。因此最后两个参数的内容依赖于消息的类型。
    产生消息

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -