平面滚动条

Microsoft Internet Explorer 4.0 引入了一种称为平面滚动条的新视觉技术。 在功能上,平面滚动条的行为就像标准滚动条一样。 区别在于,可以将其外观自定义为比标准滚动条更大的程度。

下图显示包含平面滚动条的窗口。

screen shot of a window that contains a flat scroll bar

注意

Comctl32.dll 版本 4.71 到 5.82 支持平面滚动条。 Comctl32.dll 版本 6.00 及更高版本不支持平面滚动条。

 

使用平面滚动条

本部分介绍如何在应用程序中实现平面滚动条。

开始之前

若要使用平面滚动条函数,必须在源文件中包含 Commctrl.h 并与 Comctl32.lib 链接。

向窗口添加平面滚动条

若要向窗口添加平面滚动条,请调用 InitializeFlatSB,将句柄传递给窗口。 必须使用等效的 FlatSB_XXX 函数,而不是使用标准滚动条函数来操作滚动条。 平面滚动条函数用于设置和检索滚动信息、范围和位置。 如果尚未为窗口初始化平面滚动条,则平面滚动条 API 将遵循相应的标准函数(如果使用)。 这样就可以打开和关闭平面滚动条,而无需编写条件代码。

由于应用程序可能已为其平面滚动条设置自定义指标,因此当系统指标发生更改时,它们不会自动更新。 当系统滚动条指标发生更改时,WM_SETTINGCHANGE 消息将广播,其 wParam 设置为 SPI_SETNONCLIENTMETRICS。 若要将平面滚动条更新到新的系统指标,应用程序必须处理此消息,并显式更改平面滚动条的指标相关属性。

若要更新滚动条属性,请使用 FlatSB_SetScrollProp。 以下代码片段将平面滚动条的指标相关属性更改为当前系统值。

void FlatSB_UpdateMetrics(HWND hWnd)
{
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXVSCROLL, GetSystemMetrics(SM_CXVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHSCROLL, GetSystemMetrics(SM_CXHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVSCROLL, GetSystemMetrics(SM_CYVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYHSCROLL, GetSystemMetrics(SM_CYHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHTHUMB, GetSystemMetrics(SM_CXHTHUMB), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVTHUMB, GetSystemMetrics(SM_CYVTHUMB), TRUE);
}

增强平面滚动条

FlatSB_SetScrollProp 允许修改平面滚动条以自定义窗口的外观。 对于垂直滚动条,可以更改条形宽度和方向箭头的高度。 对于水平滚动条,可以更改条形高度和方向箭头的宽度。 还可以更改水平滚动条和垂直滚动条的背景色。

FlatSB_SetScrollProp 还允许自定义平面滚动条的显示方式。 通过更改 WSB_PROP_VSTYLE 和 WSB_PROP_HSTYLE 属性,可以设置要使用的滚动条的类型。 三个样式可用。

Style 说明
FSB_ENCARTA_MODE 显示标准平面滚动条。 当鼠标在方向按钮或缩略图上移动时,滚动条的该部分将以三维显示。
FSB_FLAT_MODE 显示标准平面滚动条。 当鼠标在方向按钮或缩略图上移动时,滚动条的该部分将以对比色显示。
FSB_REGULAR_MODE 显示普通的非平面滚动条。 不会应用任何特殊的视觉效果。

 

删除平面滚动条

如果要从窗口中删除平面滚动条,请调用 UninitializeFlatSB 函数,将句柄传递给窗口。 此函数仅在运行时从窗口中删除平面滚动条。 当窗口被销毁时,无需调用此函数。