平面滾動條
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屬性,您可以設定要使用的滾動條類型。 有三種樣式可供使用。
樣式 | 描述 |
---|---|
FSB_ENCARTA_MODE | 標準平面滾動條隨即顯示。 當滑鼠移至方向按鈕或拇指上方時,滾動條的該部分會顯示在 3D 中。 |
FSB_FLAT_MODE | 標準平面滾動條隨即顯示。 當滑鼠移至方向按鈕或拇指上方時,滾動條的該部分將會以反轉色彩顯示。 |
FSB_REGULAR_MODE | 會顯示一般、非充氣滾動條。 不會套用任何特殊的視覺效果。 |
拿掉平面滾動條
如果您想要從視窗移除平面滾動條,請呼叫 UninitializeFlatSB 函式,將句柄傳遞至視窗。 此函式只會在運行時間從視窗移除平面滾動條。 當窗口終結時,您不需要呼叫此函式。