二、Windows控件与颜色—系统颜色
Windows保留了29种系统颜色以供各种显示使用。您可以使用GetSysColor和SetSysColors来获得和设定这些颜色。在Windows表头文件中定义的标识符规定了系统颜色。使用SetSysColors设定的系统颜色只在目前Windows对话过程中有效。
借助Windows「控制台」程序的「显示器」部分,您可以改变一些(但不是全部)系统颜色。若是Microsoft Windows NT,选中的颜色会储存在系统登录中;若是Microsoft Windows 98,则储存在WIN.INI文件中。系统登录和WIN.INI文件都为这29种系统颜色使用了关键词(与GetSysColor和SetSysColors的标识符不同),在系统颜色的后面跟着红、绿、蓝三种颜色的值,该值的变化范围是0到255。下表说明了这29种系统颜色是如何在GetSysColor、SetSysColors以及WIN.INI关键词中用常数来标识的。这张表是按照COLOR_ 常数值(从0开始到28结束)顺序排列的:
| 
					 表9-3  | 
			
	
| 
					 GetSysColor和SetSysColors  | 
				
					 系统登录键或WIN.INI标识符  | 
				
					 内定的RGB值  | 
			
| 
					 COLOR_SCROLLBAR  | 
				
					 Scrollbar  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_BACKGROUND  | 
				
					 Background  | 
				
					 00-80-80  | 
			
| 
					 COLOR_ACTIVECAPTION  | 
				
					 ActiveTitle  | 
				
					 00-00-80  | 
			
| 
					 COLOR_INACTIVECAPTION  | 
				
					 InactiveTitle  | 
				
					 80-80-80  | 
			
| 
					 COLOR_MENU  | 
				
					 Menu  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_WINDOW  | 
				
					 Window  | 
				
					 FF-FF-FF  | 
			
| 
					 COLOR_WINDOWFRAME  | 
				
					 WindowFrame  | 
				
					 00-00-00  | 
			
| 
					 COLOR_MENUTEXT  | 
				
					 MenuText  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_WINDOWTEXT  | 
				
					 WindowText  | 
				
					 00-00-00  | 
			
| 
					 COLOR_CAPTIONTEXT  | 
				
					 TitleText  | 
				
					 FF-FF-FF  | 
			
| 
					 COLOR_ACTIVEBORDER  | 
				
					 ActiveBorder  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_INACTIVEBORDER  | 
				
					 InactiveBorder  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_APPWORKSPACE  | 
				
					 AppWorkspace  | 
				
					 80-80-80  | 
			
| 
					 COLOR_HIGHLIGHT  | 
				
					 Highlight  | 
				
					 00-00-80  | 
			
| 
					 COLOR_HIGHLIGHTTEXT  | 
				
					 HighlightText  | 
				
					 FF-FF-FF  | 
			
| 
					 COLOR_BTNFACE  | 
				
					 ButtonFace  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_BTNSHADOW  | 
				
					 ButtonShadow  | 
				
					 80-80-80  | 
			
| 
					 COLOR_GRAYTEXT  | 
				
					 GrayText  | 
				
					 80-80-80  | 
			
| 
					 COLOR_BTNTEXT  | 
				
					 ButtonText  | 
				
					 00-00-00  | 
			
| 
					 COLOR_INACTIVECAPTIONTEXT  | 
				
					 InactiveTitleText  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_BTNHIGHLIGHT  | 
				
					 ButtonHighlight  | 
				
					 FF-FF-FF  | 
			
| 
					 COLOR_3DDKSHADOW  | 
				
					 ButtonDkShadow  | 
				
					 00-00-00  | 
			
| 
					 COLOR_3DLIGHT  | 
				
					 ButtonLight  | 
				
					 C0-C0-C0  | 
			
| 
					 COLOR_INFOTEXT  | 
				
					 InfoText  | 
				
					 00-00-00  | 
			
| 
					 COLOR_INFOBK  | 
				
					 InfoWindow  | 
				
					 FF-FF-FF  | 
			
| 
					 [no identifier; use value 25]  | 
				
					 ButtonAlternateFace  | 
				
					 B8-B4-B8  | 
			
| 
					 COLOR_HOTLIGHT  | 
				
					 HotTrackingColor  | 
				
					 00-00-FF  | 
			
| 
					 COLOR_GRADIENTACTIVECAPTION  | 
				
					 GradientActiveTitle  | 
				
					 00-00-80  | 
			
| 
					 COLOR_GRADIENTINACTIVECAPTION  | 
				
					 GradientInactiveTitle  | 
				
					 80-80-80  | 
			
这29种颜色的默认值是由显示驱动程序提供的,在不同的机器上可能略有不同。
坏消息:虽然这些颜色中有许多似乎都可以从颜色常数名称上了解其代表意义(例如,COLOR_BACKGROUND是所有窗口后面的桌面区域颜色),在最近版本的Windows中系统颜色的使用变得非常混乱。以前,Windows在视觉上要比今天简单得多。实际上,在Windows 3.0以前,只定义了前13种系统颜色。但随着使用看起来越来越难以控制的立体外观,相对应地也需要更多的系统颜色。
