windows程序设计_第五版(中文完整版).pdf

所需积分/C币:50 2013-07-27 19:46:32 6.69MB PDF
收藏 收藏
举报

windows程序设计_第五版(中文完整版
日录 和的结合 调色盘管理器- -865~1108 2013-8-31~2013-9-5 使用调色盘 调色盘动画 调色盘和真实世界图像 处理链接库 文字和字体 --1109~1229 2013-9-6~2013-9-9 简单的文字输出 字体的背景 逻辑字体 字体列举 段落格式 有趣的东西 2013-9-10~2013-9-13 旧的 格式 增强 进阶篇 多重文件界面一 1325~1351 2013-9-10~2013-9-10 概念 的范例程序 多任务和多线程 1352~1404 2013-9-11~2013-9-13 多仟务的各种模式 的多线程处理 线程司步 事件信号 线程区域储存空间( 动态链接库 1405~1437 2013-9-14~2013-9-15 动态链接库的基本知识 各式各样的讨论 声音与音乐 1438~1605 2013-9-16~2013-9-19 和多媒体 波形声音 和音乐 领略 1606~1645 2013-9-20~2013-9-21 和 fe/)我的文料 ly EasyHM files/D)compilations/Window样序设计/ ndex. htm0111723:1:36 日录 壹佰软件开发小组整理编译 fle//)我的文样/ My EasyCHM files/Decompilations/ Windows程序设计 Index htm2107170:1:36 开 开始 壹佰软件开发小组整理编译 本书介绍了在 和 下程序写作的方法。这些程序用语言编写并使用原始的 如在本章稍后所讨论的,这不是写作 稈序的唯一方汏。然而,无论最终您使用什么方式写作程 序,了解 都是非常重要的。 正如您可能知道的, 已成为使用 位徽处理器(例如和 )的兼容型个人计算机环境上最新的图形操作系统之代 表 是 兼容机种以及一些(精简指令集计算机)工作站上使用的 工业增强型版本。 使用本书有三个先决条件。首先,您应该从使用者的角度熟悉 。不要期望可以在不了解 使用者接口的情形下开发其应用程序。 因此,我建议您在开发程序(或在进行其它工作)时使用执行 的机器来跑 应用程序。 第二,您应了解语言。如果要写 程序,开始却不想了解语言,那不是一个好主意。我建议您在文宇控制台环境中,例如在 命令提示窗口下提供的环境中学习语言。 程序设计有时包括一些非文字模式程序设计的语言部分;在这些情况下,我将针对这 些问颗提供讨论。但大多数情况下,您应非常熟悉该语言,特别是语言的结构和揞针。了解标准语言执行期链接库的一些相关知识是有帮助 的,但不是必要的。 第三,您应该在机器上安装一个适于进行程序设的位语言编泽器和开发环境。在本书中,假定您正在使用 该软件包可独立购买,也可作为 软件包的一部分购买。 到此为止,我将不再假设您具有任何图形使用者接口(如 )的程序写作经验。 环境 几乎不需要介绍。然而人们很容易忘记给办公室和家庭桌上型计算机所带来的重大改变 在其早期曾经走过一段坎坷的 道路,服桌上型计算机市场的前途一度相当渺茫。 简史 在年秋天 推出之后不久 就已经很明显成为上的主流操作系统。 代表 (磁盘操作系 统 是一个小型的操作系统 提供给用户一种命令刎接口,提供如和的命令,也可以将应用程序加载內存执行。对于 应用煋序写作者,它提供了一组函数呼叫,进行文件的输入输出(。对于其它的外围处理一尤其是将文字或图形写到显小器上一应用程序可以 直接存取的硬件。 由丁内存和硬件的限制,成熟的图形环境缓慢地才到来。当苹果计算机公司不幸的计算机在年月发表时,它提供了不同丁文字模式环境的 另一种选择,并在年月成为 上图形环境的一种标准。尽管 的市场占有率在下降,但是它仍然被认为是衡量所有其它图形环 琼的标准。包括 和 的所有图形环境,其实都要归功于 )在年代中期所作的开拓性研究工 作。 是由微软在年月(在之后, 之前)宣布,并在两年后(年月)发行。在此后的两年中,紧随着 早期版本之后,又推出了几种改进版本,以支痔国际商业市场,并提供新型视讯显示器和打印机的驱动程序。 版本是在年月正式在市场上推出的。该版本对使用者接口做了一些改进。这些改进中最有效的是使用了可重迭式窗口 而 中使庄的是并排式窗口。 还增强了键盘和鼠标接口,特别是加入了菜单和对话框 至此 还只要求 或者等级的微处理器,以「实际模式」执行,只能存取地址在以下的内存。 (在 之后不久发行的)使用微处理器的「虚拟」模式,实现将直接存取便件的多个 程序窗口化和多任务化。为了统一起 见 版本被更名为 是在年月日发表的。它将 和 结合到同一种产品中。 有了一个很大的改变,这就是 对的 和微处理器俣护模式的支持。这能使 和 应用程序能存取高达的内存。 用丁执行程序和维护文件 的「外壳」程序得到了全面的改进 是第一个在家用和办公室市场上取得立足点的版本 任何 的历史介绍都必须包括一些的说明,是对和 的另一种选择,最初是由 和合作开发的。版 木(只有文字模式)在 或者后来的)微处理器上运行,在年末发布。在年月的版木中出现了管理图形使用者接口 的( 最初的设计构想是成为 的一种保护模式版本,但是图形改变程度太大,致使软件生产厂商很难提供 对这两种平台的支持。 fe/)我的文料 ly EasyHM files/D)compilations/Window样序设计/hm[0101723:1:38 开 到年月 和 之间的冲突达到了高峰,导致这两个公司最后分道扬镳。接管了 而 明确表示 将是他们操 作系统策略的中心。虽然仍然拥有一些狂热的崇拜者,但是它远不及 这样的普及程虔 版本是年月发布的,其中包括的几个重要特性是 字体技术(给 带来可缩放的轮廓字体、多媒体(声音 和音乐、对象连结和嵌入( )和通用对话。跟样 只能在保护模式下运作,并且要求至 配置了内存的或处理器。 在年月发表的 是第一个支持 和 微处理器位保护模式的 版本。 提供位平坦寻址,并 使用位的指令集。(本鸢后面我会谈到一些寻址空间的问题。 还可以移植到非处理器上,并在几和使用芯片的二作站上执 是在年月发布的。和 一样 也支持 或更高等级处理器的位保疒模式。虽然它缺少 中 的某些功能,诸如高安全性和对机器的可移植性等,但是 县有需要较少硬件瓷溟的优点 在年月发布,具有许多加强功能,包括执行效能的提高、更好的硬件支持以及与因特网和仝球信息网()更紧密的结合。 方面 和 都是支持位优先权式多任务( )及多线程的图形操作系统。 拥有图形使用者接口 这种使用者界面也称作「可视化接口」或「图形窗口环境」。有关的概念可追溯至年代中期,在和等机器上以及 等环境 中由 所作的研究⊥作。该项研究的成果后来被 和 引入主流并流行起来。虽然有一些争议,但现在已非常清 楚 是( 的 的说法)一个在个人计算机工业史上集各方面技术大成丁一体的最重要产物。 所有都在点矩阵对应的视讯显示器上处理图形。图形提供了使用屏幕的最佳方式、传递信息的可视化丰富多彩环境,以及能 够 所见即所得)的图形视讯显示和为书面文件准备好格式化文宇输出内容。 在早期,视讯显示器仅用于响应使用者通过键盘输入的文字。在图形使用者接口中,视讯显示器自身成为使用者输入的一个来源。视讯显示器以图 标和输亼设备(例如按钮和滚动条)的形式显示多种图形对象。使用者可以使用键盘(或者更直接地使用鼠标等指向设备)直接在屏幕上操纵这些 对象,拖动图形对象、按下鼠标按钮以及滚动滚动条 因此,使用老与程序的交流变得更为亲密。这不再是一种从键盘到程疗,再到视讯显示器的单向信息流动,使用者已经能够与显示器上的对象直接 父互作用了。 使用者不再需要花费长时间学习如何使用计算机或掌握新程序了 让这一切成真,因为所有应用程序都有相同的基本外观和感觉。程序占 拥一个窗口一屏幕上的一块矩形区域。每个窗口H一个标题列标识。大多数稈序功能由稈序的菜单开始。用户可使用滚动条观察那些无法在一个屏 幕中装下的信息。某些菜单项目触发对话框,用户可在其中输入额外的信息。几乎在每个大的 程序中都有一个用于开启文件的特殊对话 框。该对话框在所有这些 程序中看起来都一样(或接近相同),而且几乎总是从同一菜单选项中启动 旦您了解使用一个 程厅的方法,您就非常容易学习其它的 程序。菜单和对活框允许用户试验一个新程厅并探究它的功能。大多 数 程序同时具有键盘接口和鼠标接口。虽然 程序的大多数功能可通过键盘控制,但使用鼠标要容易得多。 从程序写作者的角度看,一致的使用者接口来白于 建构菜单和对话框的内置程序。所有菜单都有同样的键盘和鼠标接口,因为这项工作是 处理,而不是由应用程序处理。 为便于多个程序的使用,以及这些程序间信息的交换, 支持多任务。在同一时刻能有多个 程序显示并运行。每个程序在屏幕上占 据一个窗口。用户可在屏幕上移动窗口,改变它们的人小,在不同程序间切换,并从一个程序向另一个程序传送数据。因为这些窗口看起来有些像 桌面上的纸(当然,这是计算机还未占据办公桌之前的年代), 有时被称作:一个显示多个程序的「具象化桌面」。 的早期版本使用一种「非优先权式( )」的多任务系统。这意味着 不使用系统定时器将处理时间分配给系统中运行 的多个应用程序,程序必须白愿放弃控制以便其它程序运行。在 和 中,多任务是伉先权式的,而且程序白身可分割成近乎 同时执行的多个执行绪 操作系统不对内存进行管理便无法实现多任务。当新程序启动、旧程序终止时,内存会出现碎裂空间。系统必须能够将闲置的内存空间组织在一 起,囚此系统必须能够移动内存中的程序代码和数据块。 即使是在微处理器上跑的 也能进行这类内存管理。在实际模式限制卜,这种能力被认为是软件工程一个令人惊讶的成就 在 中,硬件结构的内存限制,在不要求任何额外内存的情况下被有效地扩展了。但 并未就此停步 许 应用程序存取扩充内存( 在保护模式下,允许 应用程序存取高达的扩展内存。 和 通过成熟的位操作系统及平坦寻址空间,摆脱了这些旧的限制 fe/)我的文料 ly EasyHM files/D)compilations/Window样序设计/hm[0101723:1:38 开 上执行的程序可共亨在称为「动态链接库」的文件中的例程。 包括一个机制,能够在执行时连结使用动态链接库中例栏的程 序 自身基本上就是一个动态链接库的集合。 是一个图形接口 程序能够在视讯显示器和打印机上充分利用图形和格式化文字。图形接口不仪在外观上更有吸引力,而且还能 够让使用者传递高层次的信息。 应用程序不能直按存取屏幕和打印机等图形显示设备硬件。相反, 提倛一种图形程序语言(称作图形设备接口,或者),使 显示图形和格式化文字更容易 虚拟化了显示硬件,使为 编写的程序可使用任何具有 设备驱动程序的视频卡或打印机 而程序无需确定系统相连的设备类型。 对 开发者来说,将与设备无关的图形接口输出到上不是件轻松的事。的设计是基于开放式架构的原则,鼓励第三方硬件制造商 为开发接口设釜,而且开发了大量这样的设备。虽然出现了多种标准,上的传统 程序仍不得不各自支持许多不同的硬设备。这对 宇处理软件来说非常普遍,它们连司到张有许多小文件的磁盘同销售,每个文件支持一种特定的打印机。 程序不要求每个应用程 序都自行开发这些驱动程序,因为这种支持是 的一部分。 动态链接 运作机制的核心是一个称作「动态链接」的概念 提供了应用程序丰富的可呼叫函数,大多数用于实作其使用者接口和在视讯显 示器上显示文字和图形。这些函数采用动态链接库( )的方式撰写。这些动态链接库是些具有或者有时 是扩展名的文件,在 中通常位于 子目录中,在 中通常位 和 子目录中 在早期, 的主要部分仅通过三个动态链接库实作。这代表了 的三个主要子系统,它们被称作 和。当子系统的数目 在的的 最近版本中增多时,大多数典型的 程序产生的函数呼叫仍对应到这三个模决之一。 (日前由位的 和位 实现)处理所有在传统上由操作系统核心处理的事务一内存管理、文件和多任务管理 (由位约 和位 实作)指使用者接口,实作所有窗口运作机制。(由位的 和位的 实作)是一个图形设备接口,允许程 序在屏幕和打印机上显示文字和图形。 支持应用程序可使用的上千种函数呼叫。每个函数都有一个描述名称,例如 。该函数(如您所猜想的)为程序建立新窗 口。所有应用程序可以使用的 函数都在表头文件里预先声明过 在 程序中,使用 眄数的方式通常与使用如等语言链接库函数的方式相同。主要的区别在于语言链接库函数釣机械码连结到 您的难序代码中,而 哟数的难序代码在您程序执行文件外的中。 当您执行 程序时,它通过一个称作「动态链接」的过程与 相接。一个 的文件中有使用到的不同动态链接库的参考数 据,所使用的函数即在那些动态链按库中。当 程序被加载到内存中时,程序中的呼叫被指向函数的入口。如果该不在闪存中,就 把它加载到内存中。 当您连结 程序以产生一个可执行文件时,您必须连结程序开发环境提供的特定「引用链接库( )」。这些引用链接库包含了动 态链接库名称和所有 函数呼叫的引用信息。连结程序使用该信息在文件中建立一个表格,在加载程序时, 使用它将呼叫转换 为 函数。 程序设计选项 为说明 程序设计的多种技术,本书提供了许多范例程序。这些序使用语言撰写并原原本本的使用 来开发程序。我将这种方 法称作「古典」 程序设计。这是我们在年为 写程序的方法,它今天仍是写作 程序的有效方法。 和内存模式 对于煋序写作者来说,操作系统是由本身的定义的。包含了所有应用程序能够使用的操作系统函数呼叫,同时包含了相关的数据型态和结 构。在 中 还意味着一个特殊的程序架构,我们将在每章的开头进行研究 一般而言, 自 以来一直保持一致,没什么重大改变。具有 程序写作经验的 程序写作者会对 程序的原始码感觉非常熟悉。改变的一种方式是进行增强。 支持不到个函数呼叫,现在已有了上千种函数呼叫。 和它的语法的最大变化来自于从位架构向位架构转化的过程中。 从版本到版本使用位 、和微 处理器上所谓的分段内存模式,由于兼容性的原因,从开始的位微处理器也支持该模式。在这种模式下,徴处理器缓存器的大小为位, 因此的数据型态也是位宽。在分段内存模式下,内存地址由两个部分组成一一个位段()指针和一个位偏移量()指标。 从程序写作者的角度看,这非常凌乱并带来了或指针(包括段地址和偏移量地址)和或指标(包括带有假定段地址的偏移量地圠) fle//)我的文样/ My EasyCHM files/Decompilations/ Windows程序设计/htm011723:1:38 开 的区别。 从 和 开始 支持使用 和 处理器位模式下的位平坦寻址内存模式。语言的数据型态也 扩展为位的值。为位版本 编写的程序使用简单的平坦线性空间寻址的位指针值。 用于位版本 的 )现在称作用于位版本 的 和所有版本 的 )现在称作。许多函数呼叫在从到的转变中保持相同,但有些需要增强。例如,图像坐标点由中的位值变 为中的位值。此外,某些函数呼叫返回一个包含在位整数值中的二维竺标点。这在中不可能,因此增加的新函数呼叫以不同 方式运作。 所有位版本的 都支持 (以确保和旧有应用程序兼容)和 (以运行新应用程序)。非常有趣的是 及和 的工作方式不同。在 中 函效呼叫通过一个转换层被转化为函数呼叫,然后被操作系统处 理。在 ,该操作正相反 函数呼叫通过转换层转换为函数呼叫,再由操作系统处理 在同一时刻有两个不同的 蕉(至少名称不同) (「」代表「(子集)」)是一个,允许程序写作者编写 在 上执行的位应用稈序。该仅支持已被支持的位函数版。此外 度被称作 (」代表 (兼容性)」),但该术语已被抛弃了。 现在, 和 都被认为能够支持 。然而,每个操作系统依然都支持某些不被的操作系统支持的某些功能特性。囚为 它们的相同之处是相当可观的,所以有可能编写在两个操作系统下都冂执行的程序。而且,人们普遍认为这两个产品最终会合而为 语言选项 使用语言和原始的不是编写 程序的唯一方法。然而,这种方法却提倛给您最佳的性能、最强大的功能和在发掘 特性方而最 大的灵活性。可执行文件相对较小且运行时不要求外部链接库(自然, 自身除外)。最重要的是,不管您最终以什么方式开 发 应用程序,熟悉会使您对 内部有更深入的了解。 虽然我认为学习古典的 程序设计对任何 程序写作者都是重要的,我没有必要建议使用和编写每个 应用程序。许多程 序写作者,特别是那些为公司内部开发煋序或在家编写娱乐程序的程序写作者喜欢轻松的开发环境,例如 或者 (它结合了对象导向的版本)。这些环境使程序写作者将精力集中丁应用程序的使用者接口和柞关使用者接口对象的程序代码上。要学 ,您也许需要参考 的一些其它图书,例如 年着的《 在专业程序写作者中一特别是那些开发商业应用程序的程序写作者 和 ()是近年来流 行的选择。在一组对象类别中封装了许多 程序设计中的琐碎细节。 的《 第二版 年)提供了程序的写作指南。 最近 和 的沇行大力推广着 的,这是一个受片发却与微处埋器无关的程序设计语言,而且结合了 可在几个操作系统平台上执行的图形应用程序开发工具组。 有一本关丁 的)开发工具的好书, 》(年),由 着 显然,很难说哪种方祛更有利于丌发 应用程序。夏主要的是,也许是应用程序自身的特性决定了所使用的工具。不管您最后实际上使用什 么工具写作程序,学习 将使您更深入地了解 工作的方式。 是一个复杂的系统,在上增加一个程序写作层并未减少 它的复杂性,仅仅是掩盖了它,早晚您会碰到它。了解会给您更好的补救机会。 在原始的 之上的任何软件层都必定将您限制在全部功能的一个子集内。您也许发现,例如,使用 编写应用程序非常理, 然而它不允许您徹一个或两个很简单的基本工作。在这种情况下,您将不得不使用原始的呼叫。定义了作为 程序写作者所需的 切。没有什么方法比直接使用更万能的了 尤其问题百出。虽然它大幅简化了某些工作(例如 我却经常发现要让它们按我所悲的去工作时,会在其它特性(例 如 架构)上碰壁。还个是 程序没计者所追求的灵丹妙药,很少有人认为它是一个好的对象导向设计的模型。程序 写作者从他们使用的对象类别定义如何工作中受益颇深,并会发现他们经常参考原始码,搞懂这些原始码是学习 的好处之 程序开发环境 在本书中,假定您正使用 标准版、专业版和企业版都可以。经济的标准版足以应付本书中的程序设计需。 还是 中的一部分。 软件包中包括编译器和其它编译及连结 程序所需的文件和工具等。它还包括 ,一个可编 辑原妒码、以交谈方式建辶资源(如图标和对话框)以及编辑、编译、执行和测试稈序的环境 fe/)我的文料 ly EasyHM files/D)compilations/Window样序设计/hm[0101723:1:38 开 如果您正使用 ,则需要为 和 更新表头文件和引用链接库,这些东内可从 的网站上得到。在 选择「 ,然后选择 」(软件开发套件),您就能在选择的目录中下载和安装更新文 件。要让 浏览这些目录,可以从「」菜单项选择「 」然后按下 标 网站上的部分代表 软件开发者网络)」。这是一个向程序写作者提供了经常更新的 的计划,这些 中包含了程序写作者在 开发中所需的最新东西。您也可以订阅,这样就避免经常得从 的网站下 载文件。 文件 本书不是 权威的正式文件的替代品。那组文件不再以印形式出版,它仅能从 或 上取得 当您安装 时,您将得到一个包括文件的在线求助系统。您可通过订阅或使用 网站上的在线求助系统更新该文件。 连接到 ,并选择「 在 中,从 菜单项选择 项目开启 窗口。文件按树形结构红织,寻找标有「 的部分 有在本书中引用的文件都关白于该部分。我将向您介绍如何从「 」开始寻找以斜线分层分门别类的文件的位置。(我知道,所 」是整个知识库中较为晦涩的部分,但我敢保讦那是 程序设计的基本核心。)例如,对于如何在 稈序屮使用鼠标的文 件,您可参考 我在前面提到 人致分为 和子系统。 接口在 中 界面函数在 中,位于 编写第一个 程序 现在是开始写些程序的时候了。为了便于对比,让我们以一个非常短的 程序和一个简短的文字模式程序开始。这会帮助我们找到使用开发 环境并感受建立和编译程序机制的正确方冋。 文字模式( )模型 程序写作者们喜爱的一本书是 年和年),由 和 (亲 切地称为)编着。该书的第一章以一个显示「 」的语言程序开始。 这里是在《 》第一版第贝中出现的程序 以前程序写作者在使用等执行期链接库函数时,无需先声明它们。但这是年代,我们愿意给编译器一个在我们的程序中标出错误的机 会。这里是在第二版中修正的程序 该程序仍然是那么短。但它可通过编译并执行得很好,但当今许多程序写作者更愿意清楚地说明函数的返曰值,在这种情况下规定该区 fle//)我的文样/ My EasyCHM files/Decompilations/ Windows程序设计/htm011723:1:38 开 数必须返回一个值: 我们还可以包括的参数,把程序弄得更长一些,但让我们暂且这样就好了一包括一个声明、程序的进入点、一个对执行期链接库函数的 呼叫和一个语句。 同样效果的 程序 关于「 程序的等价程序有和文字模式版本完全相同的组件。它有 声明、一个程序进入点、一个函数呼叫和 个语句。下面便是该程序 在剖析该程序之前,让我们看一下在 中建立新程序的方式。 首先,从菜单中选在对话框中,单击 页面标签,选择 在 栏中,选择一个子目录,在 栏中,输入该呗目的名称,此时该名称是 这便是在 栏中显示的目录的子目录。 复选框应该勾起 来 部分应该显示 选择 将会出现一个标题为 的对话框,指出要建立一个 并按卜 按钮。 从菜单中再次选择。在对话框中,选择页面标签,选择 复选框应被选中,并应显示 在 栏中输入 选中。 fle//)我的文样/ My EasyCHM files/Decompilations/ Windows程序设计/htm011723:1:38

...展开详情
试读 127P windows程序设计_第五版(中文完整版).pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
windows程序设计_第五版(中文完整版).pdf 50积分/C币 立即下载
1/127
windows程序设计_第五版(中文完整版).pdf第1页
windows程序设计_第五版(中文完整版).pdf第2页
windows程序设计_第五版(中文完整版).pdf第3页
windows程序设计_第五版(中文完整版).pdf第4页
windows程序设计_第五版(中文完整版).pdf第5页
windows程序设计_第五版(中文完整版).pdf第6页
windows程序设计_第五版(中文完整版).pdf第7页
windows程序设计_第五版(中文完整版).pdf第8页
windows程序设计_第五版(中文完整版).pdf第9页
windows程序设计_第五版(中文完整版).pdf第10页
windows程序设计_第五版(中文完整版).pdf第11页
windows程序设计_第五版(中文完整版).pdf第12页
windows程序设计_第五版(中文完整版).pdf第13页
windows程序设计_第五版(中文完整版).pdf第14页
windows程序设计_第五版(中文完整版).pdf第15页
windows程序设计_第五版(中文完整版).pdf第16页
windows程序设计_第五版(中文完整版).pdf第17页
windows程序设计_第五版(中文完整版).pdf第18页
windows程序设计_第五版(中文完整版).pdf第19页
windows程序设计_第五版(中文完整版).pdf第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >