虽然视窗卷动列有固定的宽度,Windows使用CreateWindow呼叫中(或者在後面的MoveWindow呼叫中)给定的矩形尺寸来确定卷动列控制项的尺寸。您可以建立细而长的卷动列控制项,也可以建立短而粗的卷动列控制项。
如果您想建立与视窗卷动列尺寸相同的卷动列控制项,那么可以使用GetSystemMetrics取得水平卷动列的高度:
或者垂直卷动列的宽度:
根据Windows文件,卷动列窗样式识别字SBS_LEFTALIGN、SBS_RIGHTALIGN、SBS_TOP ALIGN和SBS_BOTTOMALIGN给出卷动列的标准尺寸,但是这些样式只在对话方块中对卷动列有效。
对视窗卷动列,您可以使用同样的呼叫来建立卷动列控制项的范围和位置:
其区别在於:视窗卷动列将父视窗的代号作为第一个参数,并且以SB_VERT或者SB_HORZ作为第二个参数。
令人吃惊的是,名为COLOR_SCROLLBAR的系统颜色不再用於卷动列。两端的按钮和小方块的颜色由COLOR_BTNFACE、COLOR_BTNHILIGHT、COLOR_BTNSHADOW、COLOR_BTNTEXT (用於小箭头)、COLOR_DKSHADOW和COLOR_BTNLIGHT决定。两端按钮之间区域的颜色由COLOR_BTNFACE和COLOR_BTNHIGHLIGHT决定。
如果您拦截了WM_CTLCOLORSCROLLBAR讯息,那么可以在讯息处理中传回画刷以取代该颜色。让我们来试一下。
COLORS1程式
为了解卷动列和静态子视窗的一些用法-也为了深入了解颜色-我们将使用COLORS1程式,如程式9-3