Microsoft Internet Explorer 4.0 引入了一种称为平面滚动条的新视觉技术。 在功能上,平面滚动条的行为就像标准滚动条一样。 区别在于,可以将其外观自定义为比标准滚动条更大的程度。
下图显示包含平面滚动条的窗口。
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
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈