相对於个人电脑的其他元件,键盘有非常久远的历史,它起源於1874年的第一台Remington打字机。早期的电脑程式员用键盘在Hollerith卡片上打孔,後来在终端机上用键盘直接与大型主机沟通。PC上的键盘在某些方面进行了扩充,加上了功能键、游标移动键和单独的数字键盘,但它们的输入原理基本相同。
键盘基础
您大概已经猜到Windows程式是如何获得键盘输入的:键盘输入以讯息的形式传递给程式的视窗讯息处理程式。实际上,第一次学习讯息时,键盘事件就是一个讯息如何将不同型态资讯传递给应用程式的显例。
Windows用八种不同的讯息来传递不同的键盘事件。这好像太多了,但是(就像我们所看到的一样)程式可以忽略其中至少一半的讯息而不会有任何问题。并且,在大多数情况下,这些讯息中包含的键盘资讯会多於程式所需要的。处理键盘的部分工作就是识别出哪些讯息是重要的,哪些是不重要的。
忽略键盘
虽然键盘是Windows程式中使用者输入的主要来源,但是程式不必对它接收的所有讯息都作出回应。Windows本身也能处理许多键盘功能。
例如,您可以忽略那些属於系统功能的按键,它们通常用到Alt键。程式不必监视这些按键,因为Windows会将按键的作用通知程式(当然,如果程式想这么做,它也能监视这些按键)。虽然呼叫程式功能表的按键将通过视窗的视窗讯息处理程式,但通常内定的处理方式是将按键传递给DefWindowProc。最终,视窗讯息处理程式将获得一个讯息,表示一个功能表项被选择了。通常,这是所有视窗讯息处理程式需要知道的(在第十章将介绍功能表)。
有些Windows程式使用「键盘加速键」来启动通用功能表项。加速键通常是功能键或字母同Ctrl键的组合(例如,Ctrl-S用於保存档案)。这些键盘加速键与程式功能表一起在程式的资源描述档案中定义(我们可以在第十章看到)。Windows将这些键盘加速键转换为功能表命令讯息,您不必自己去进行转换。
对话