11.1.1 窗口的元素
读者必定已经熟悉Windows程序的用户界面的大多数主要元素。但无论如何,这里都要一一讲解这些元素,目的只是为了确保对这些术语的意义有相同的理解。理解窗口元素意义的最好方法是看一个窗口。带注释的由第1章示例生成的窗口如图11-1所示。

该示例实际上生成了两个窗口。带菜单和工具栏的较大窗口是应用程序主窗口或父窗口,较小的窗口是此父窗口的子窗口。虽然可以在不关闭父窗口的情况下,通过双击子窗口左上角的标题栏图标,或者单击子窗口右上角的"关闭"按钮,将子窗口关闭,但关闭父窗口也将自动关闭子窗口,这是因为子窗口为父窗口所拥有,依赖于父窗口才能存在。通常,一个父窗口可以有许多子窗口,稍后将看到这种情形。
典型窗口的最基本组成部分是边框、标题栏(显示用户提供给窗口的名称)、标题栏图标(位于标题栏左端)和工作区(窗口中心未被标题栏或边框使用的区域)。在Windows程序中,所有这些元素都可以自由创建。正如即将看到的那样,我们只需要为标题栏提供一些文本。
边框定义了窗口的边界,它可以是固定的或可调整的。如果边框是可调整的,就可以拖动边框来改变窗口大小。窗口还可以拥有调整手柄,使用这种手柄可以改变窗口大小。如果愿意,那么可以在定义窗口时修改边框的行为和外观。大多数窗口还有位于窗口右上角的最大化、最小化和关闭按钮。这几个按钮允许用户将窗口扩大到全屏、缩小为图标或关闭。
单击标题栏图标时,将出现一个用于更改或关闭窗口的标准菜单-- 称作系统菜单或控制菜单。右击窗口标题栏时,也会出现系统菜单。虽然该图标是可选的,但最好总是在程序生成的任何主窗口中包括标题栏图标。当调试过程中程序工作不正常时,标题栏图标可以提供一种非常方便的关闭程序的方法。
工作区是窗口的组成部分,我们通常希望程序在这里显示文本或图形。为此,在工作区中处理的方式与图7-1中庭园的方式完全相同。工作区左上角的坐标是(0,0),x坐标从左向右增加,y坐标从上向下增加。
菜单栏是窗口的可选组件,但菜单可能是最常用的控制应用程序的方式。菜单栏中的每个菜单都会在单击它时显示菜单项的下拉列表。菜单的内容和窗口中显示的许多对象的物理外观-- 如图11-1中工具栏的图标、光标等,都是由资源文件定义的。当开始编写一些更复杂的Windows程序时,将了解到更多的资源文件。
ribbon是菜单栏的替代方式。Microsoft Word和Microsoft Excel的最新版本把ribbon提供为在应用程序功能中导航的主要机制。MFC还提供了很多创建ribbon的类,但这里不介绍它们。
工具栏提供的一组图标通常是作为最常用的一些菜单项的替代方法。因为图标可以给出所提供功能的图示线索,所以经常可以使程序的使用更容易、更快捷。
在进一步介绍之前,这里为防止误解再对术语做一些说明-- 这是我们应该知道的。用户往往认为窗口就是屏幕上显示的、有边框的对象-- 这种看法当然不错,但这种对象只是窗口的一种。在Windows中,窗口是覆盖所有实体的通用术语。事实上,几乎任何可显示的实体都是窗口,例如,对话框是窗口,各个工具栏和可停靠的菜单栏也都是窗口。本书通常将使用按钮、对话框等能够说明对象种类的术语来引用对象,但需要牢牢记住它们也是窗口,因为可以对这些对象做一些对常规窗口做的事情-- 例如,可以在按钮上绘图。