能的主窗口,用户可以改变尺寸、最小化、最大化等。 Windows 也支持两种类型的对话框:模式和无模式对话框。模式对话框一旦出现在屏幕上, 只有当它退出时,屏幕上该应用程序的其余部分才能响应。无模式对话框出现在屏幕上时, 程序的其余部分也可以作出响应,它就象浮动在上面一样。 最简单的 Windows 应用程序是使用单文档界面(SDI), 只有一个框架窗口。 Windows 的 钟表、PIF 编辑器、记事本等都是 SDI 应用程序的例子。Windows 也提供了一种称为多文 档界面的组织形式,它可用于更复杂的应用程序。MDI 系统允许用户在同一应用程序中同 时可以查看多个
文档。例如,一个文本编辑器可以允许用户同时打开多个文本文件。使用 MDI 时,应用程序有一个主窗口,在主窗口中有一些子窗口,每个子窗口中各自包含有各 自的
文档。在 MDI 框架中,主窗口有一个主菜单,它对主框架中最顶端窗口有效。各子窗 口都可以缩成图标或展开,MDI 主窗口也可以变成桌面上的一个图标。MDI 界面可能会给 你一种第二桌面的感觉,它对窗口的管理和删除混乱的窗口有很大的帮助。 你所建立的没一个应用程序都会使用它自己的一套控制、 菜单结构以及对话框。 应用程 序界面的好坏取决于你如何选择和组织这些界面对象。Visual C++ 中的资源编辑器
可以使 你能容易的建立和定制这些界面对象。 事件驱动
软件和词汇 所有基于窗口的 GUI 都包含相同的基本元素, 它们的操作方式都是相同的。 在屏幕上, 用户所看到的是一组窗口,每个窗口都包含有控制、图标、对象以及一些处理鼠标和键盘的 元素。从用户角度来看,各系统的界面对象都是相同的:按钮、滚动条、图标、对话框以及 下拉菜单等等。尽管这些界面元素的“外观和感觉”可能有些不同,但这些界面对象的
工作 方式都是相同的。例如,滚动条对于 Windows、Mac 和 Motif 可能有些不同,但他们的作用 完全是一样的。 从程序员的角度来看,这些系统在概念上是相似的,尽管它们可能有很大的不同。为了 建立 GUI 程序,程序员第一步要把所有需要的用户界面控制都放到窗口上。例如,如果程 序员要建立一个从摄氏到华氏的转换的简单程序, 则程序员所选择的用户界面对象来完成并 在屏幕上把结果显示出来。 在这个简单的程序中, 程序员可能需要用户在一个可编辑的编辑 框中输入温度值, 在一个不可编辑的编辑框中显示转换结果, 然后让用户可以单击一个标有 “退出”的按钮来退出应用程序。
因为是用户来操作应用程序的控制, 所以
程序必须作出响应。 所做的响应依赖于用户使 用鼠标或键盘在不同控制上的操作。 屏幕上的每个用户界面对象对事件的响应是不同的。 例 如, 如果用户单击退出按钮, 则该按钮必须更新屏幕、 加亮它自己。 然后程序必须响应退出。 Windows 所用的模式也是类似的。在一个典型的应用程序中,你将建立一个主窗口, 并且在其中放置了一些用户界面控制。 这些控制通常被称为子窗口——它们就象一些在主窗 口中的更小更特殊的子窗口。作为程序员,你应该通过函数调用来发送信息操作这些控制、 通过把信息发送给你到代码来响应用户的操作。 如果你从未做过事件驱动程序设计,则所有这些对你来说可能是很陌生的。但是,事件 驱动程序设计方式是很容易理解的。 具体的细节对不同的
系统可能有些不同, 但是其基本概 念是类似的。在一个事件驱动界面中,应用程序会在屏幕上绘制几个界面对象,如按钮、文 本区和菜单。 应用程序通常通过一段称为事件循环的的代码来响应用户的操作。 用户可以使 用鼠标或键盘来任意操作屏幕上的对象。例如,用户用鼠标单击一个按钮。用鼠标单击就称 为一个事件。 事件驱动系统把用户的动作如鼠标单击和键盘操作定义为事件, 也把系统操作 如更新屏