下面是可达到相同目的、但更为简单(但不太直观)的方法:
但是,这两种方法都有缺点:它们阻止按钮对Spacebar键作出回应,因为该按钮总是得不到输入焦点。一个更好的方法是使按钮得到输入焦点,也能让使用者用Tab键从一个按钮转移到另一个按钮。这听起来似乎不太可能,在本章的後面,我们将要说明在COLORS1程式中如何用「视窗子类别化」技术来实作这种方法。
控制项与颜色
您可以在图9-1中看到,许多按钮的显示看起来并不正确。按键还好,但是其他按钮却带有一个本不应该在那里的一个矩形灰色背景。这是因为这些按钮本来是为对话方块中的显示而设计的,而在Windows 98中,对话方块有一个灰色的表面。我们的视窗有一个白色的表面,这是因为我们在WNDCLASS结构中就是这样定义的。
我们已经这么做了,因为我们经常在显示区域中显示文字,而GDI使用在内定装置内容中定义的文字颜色和背景颜色,它们总是黑色和白色。为了使这些按钮更加美观一些,我们必须要改变显示区域的颜色使之和按钮的背景颜色一致,所以要以某种方法将按钮的背景颜色改为白色。
解决此问题的第一步,是理解Windows对「系统颜色」的使用。
系统颜色
Windows保留了29种系统颜色以供各种显示使用。您可以使用GetSysColor和SetSysColors来获得和设定这些颜色。在Windows表头档案中定义的识别字规定了系统颜色。使用SetSysColors设定的系统颜色只在目前Windows对话过程中有效。
借助Windows「控制台」程式的「显示器」部分,您可以改变一些(但不是全部)系统颜色。若是Microsoft Windows NT,选中的颜色会储存在系统登录中;若是Microsoft Windows 98,则储存在WIN.INI档案中。系统登录和WIN.INI档案都为这29种系统颜色使用了关键字(与GetSysColor和SetSys