界面的一致性以及应用程序界面与内部的一致性。 (4) 用户控制性 用户可以控制程序执行的全过程,而不是象 DOS 程序那样,只要一开始执行,用户就 只能等待结果,中间不可控制。它能
在用户的控制之下按照用户的意图执行指定的任务。 (5) 反馈性 能表明用户对程序的操作以及操作企图,如在一个菜单中,鼠标指针移向某一命令,该 命令条的颜色就发生变化,以保证操作的正确性。 (6) 宽容性 选择重要的操作之后,并不立即执行,还给用户提供选择确认或撤消的最后机会。 2. 数据输出与设备无关 在 Windows 应用程序中,不管处理的数据是文本还是图形,都是以图形方式进行输出 处理的,即采用了统一的图形用户接口。当需要输出数据时,不管实际的输出设备是屏幕、 打印机还是绘图仪,在程序中使用的都是同一种方法(使用统一的函数)。 3. 事件消息机制 Windows 与其他传统程序有一个很大的区别就是它的运行过程处于被动状态。 程序初始 化之后, 并不知道下一步要做什么, 而是处于等待某一事件。 一般说来, 事件来自 3 个方面:
(1) 来自鼠标或键盘; (2) 来自菜单、工具按钮或对话框控件; (3) 来自 Windows 本身,如恢复一个被其他窗口覆盖的窗口等。 一个事件发生后,系统将通知 Windows,并告诉它事件的类型、发生时间以及与屏幕相 关事件的位置。 Windows 知道事件发生后, 当 就把相关信息(如位置和时间等)组织成一个数 据结构,与消息一起发送给相关的程序。这种运行方式称为事件驱动系统或消息驱动。 4. 特殊的数据 —— 资源 通常, 一个程序可分为两大类: 操作码和数据。 这里, 数据一般是指程序操作的对象 —— 变量或常量。但是,一个典型的 Windows 应用程序还具有另外一种特殊的数据 —— 资源。 资源决定程序用户界面的形象特征。一个程序的资源定义界面元素有: (1) Accelerator(快捷键) (2) Dialog(对话框) (3) Icon(图标)、Cursor(光标)和 Bitmap(位图) (4) Menu(菜单) (5) String Table(字符串表) (6) Toolbar(工具栏) 当 Windows 调用一个应用程序时,就从程序的可执行文件中读取操作代码并初始化操 作数据(变量), 同时对它们分配内存。 资源数据保存在资源文件中, 是在程序运行时被读取, 而不是程序装载时被读取。 使用资源一方面可以使 Windows 应用程序的外观和功能更加标准化,更具有一致性, 另一方面可以减少应用程序的长度,减轻程序员的
工作量。 5. 使用句柄进行实体管理 在 Windows 程序中要用到实体 —— 程序、文件、对象、程序实例、对象实例、各种 表(快捷键表、设备描述表)以及资源等。为了对这众多的实体进行管理,Windows 在内部为 它们建立了一个索引表,以便系统查找。索引表的索引,就称为“句柄”(Handle)。句柄的值 是一个数字,在 Win16 中是 16 位,在 Win32 中是 32 位。在程序中一般用宏名进行标
识。 在 Windows 应用程序中,句柄的应用是很频繁的,Windows 使用句柄索引来存取保存 在响应表中的信息,应用程序通过句柄能够访问相应对象的信息。 表 1.1 公共 Windows 对象及其句柄
1.1.3
集成开发环境 Developer Studio
简单地说,Visual C++是从 C++和 Windows SDK 的基础上发展而成的。DOS C++脱胎 于 DOS C,但却还没有实现换骨,仅仅是在面向过程的 C 之上,又添加了一些面向对象的 机制。程序的许多方面还保留着过程化的影子: (1) 每一个 C++程序与 C 程序一样,都由一系列的函数组成,并且所有的函数都直接地 或间接地通过一个称为主函数 main()的函数调用而运行; (2) 对象之间的作用也通过函数调用而发生; (3) 程序设计的主要工作就是设计一系列的函数。 基于 SDK 的 Windows C++在实现可视化的同时又向面向对象迈进了一大步。它一方面 引入了 Windows 的看家本领 —— 窗口;同时引入了事件消息机制。但是,如同 D