静态类别
在CreateWindow函式中指定视窗类别为「static」,您就可以建立静态文字的子视窗控制项。这些子视窗非常「文静」。它既不接收滑鼠或键盘输入,也不向父视窗发送WM_COMMAND讯息。
当您在静态子视窗上移动或者按下滑鼠时,这个子视窗将拦截WM_NCHITTEST讯息并将HTTRANSPARENT的值传回给Windows,这将使Windows向其下层视窗,通常是它的父视窗,发送相同的WM_NCHITTEST讯息。父视窗常常将该讯息传递给DefWindowProc,在这里,它被转换为显示区域的滑鼠讯息。
前六个静态视窗样式只简单地在子视窗的显示区域内画一个矩形或者边框。在下表的上部,「RECT」静态样式(左列)是填入图样的矩形样式;三个「FRAME」样式(右列)是没有填入图样的矩形轮廓:
SS_BLACKRECT
SS_GRAYRECT
SS_WHITERECT
SS_BLACKFRAME
SS_GRAYFRAME
SS_WHITEFRAME
「BLACK」、「GRAY」、「WHITE」并不意味著黑、灰和白色,这些颜色是由系统颜色决定的,如表9-4所示。
表9-4
静态控制项 系统颜色
BLACK COLOR_3DDKSHADOW
GRAY COLOR_BTNSHADOW
WHITE COLOR_BTNHIGHLIGHT
对这些样式,CreateWindow呼叫中的视窗文字栏位被忽略。矩形的左上角开始於x位置坐标和y位置坐标,这些坐标都相对于父视窗。您也可以使用SS_ETCHEDHORZ、SS_ETCHEDVERT或者SS_ETCHEDFRAME ,采用灰色和白色建立一个形似阴影的边框。
静态类别也包括了三种文字样式:SS_LEFT、SS_RIGHT和SS_CENTER。它们建立左对齐、置右对齐和居中文字。文字在CreateWindow呼叫的视窗文字参数中给出,并且在以後可以用SetWindowText来改变它。当静态控制项的视窗讯息处理程式显示文字时,它使用DrawText函式以及DT_WORDBREAK、DT_NOCLIP和DT_EXPANDTABS参数。文字在子视窗的矩形内可以按文字进行换行。
这三种文字样式子视窗的背景通常为COLOR_BTNFACE,而文字本身是COLOR_WINDOWTEXT。在拦截WM_CTLCOLORSTATIC讯息时,您可以通过呼叫SetTextColor来改变文字颜色,通过SetBkColor来改变背景颜色,并传回背景画刷代号。後面的COLORS1程式展示了这一点。