基本概念

窗口

窗口是 Windows 图形用户界面最重要的元素。任务图形用户界面的应用程序都需要开窗口。一个典型的窗口包括多个组成部分。最上一栏是标题栏,标题栏包括应用程序图标和窗口标题,标题栏的右边是一组按钮。标题栏下方放置菜单的部分,称为菜单栏。中间空白部分是客户区,一般用于放置窗口的功能控件、显示内容等,也是程序设计时需要主要处理的内容。

窗口类

在应用程序开发时,需要注意每一个窗口都属性一个窗口类( Window Class)。每一种窗口类具有对固定的用户输入的处理模式,第一类窗口具有相同的菜单项、背景、图标、鼠标指针样子和窗口消息处理函数。应用程序在创建窗口前,需向系统注册窗口类,或使用系统已经定义好的窗口类(一些公用的控件所需的窗口类已经由系统定义好了)。在注册窗口类时,需指定窗口消息的处理函数。

消息和消息处理函数

Windows 系统是消息(Message)驱动的。消息在 Windows 处理用户交互的过程中具有重要作用。当用户操作输入设备,产生硬件中断后,系统内核会得到这些硬件中断,硬件在系统中经过复杂的运算和处理最终变成消息。消息被系统发送给指定窗口。所有的对用户界面的操作都会产生消息,包括鼠标单击、按钮、菜单选择、窗口创建、窗口移动等。Windows 消息种类很多。在创建窗口时,需指定窗口所属的窗口类,前面提到,每一个窗口类都对应一个消息处理函数,因此每一个窗口都具有自己的消息处理函数。程序员在开发窗口应用程序时,需编写窗口消息处理函数消息处理函数是一个回调( Call Back)函数此函数并不是由应用程序调用,而是由系统调用的。应用程序向系统注册了窗口类,创建了窗口,系统在消息产生后,需要窗口消息处理函数来处理时,调用窗口所对应的消息处理函数。
消息处理函数的功能一般是相应用户在窗口上的操作和输入。比如用户在菜单中选中了一个菜单项,那么就会产生一个消息。然后,窗口的消息处理函数就会被调用。消息处理函数被调用后根据消息的类型和参数判断应该如何处理用户的输入,然后进行相关的处理。这就是 Windows 窗口程序对用户输入的处理模式。
当然并不是只有用户的输入才会产生消息。在很多情况下,一些随机发生的事件也会产生消息,这些事件可能会对窗口应用程序的运行产生影响,比如系统关机、外设插入、计时器计时到达等。窗口处理函数需根据情况处理所需处理的消息。

控件

控件是用户界面开发的重要内容。所谓控件,实际是一种特殊的窗口。Windows 系统将一些常用的窗口模式定义为控件。应用程序可以直接使用这些控件而不需要重新定义。控件有特定的窗口样式、显示设置和消息处理过程。使用控件时不再需要做消息的处理。系统已经为每个控件定义了特定的消息处理模式。比如 Edit 控件就会在将鼠标样式变为一个竖线;在用户输入了文字后,会将文字显示在特定的位置;当用户在按住鼠标右键移动时会选中框住的文字,当用户单击右键时会显示特定的菜单,当用户选择菜单项后,进行的操作也是固定的。这些都是一个控件事先定义好的处理模式。可以说控件是模式化了的窗口。达到了方便用户使用的目的。

资源

资源是应用程序在运行中可能会使用到的一些数据。资源包括图标、位图、菜单等。在程序设计时,开发人员可以在资源脚本(.rc)中配置资源,在程序构建时,资源编译器会将资源编译为资源文件(.res),然后由链接器将资源链接到可执行文件中。在程序运行时使用这些资源。