フラット スクロール バー

Microsoft Internet Explorer 4.0 で、フラット スクロール バーと呼ばれる新しいビジュアル テクノロジが導入されました。 機能的には、フラット スクロール バーは標準のスクロール バーと同じように動作します。 違いは、標準のスクロール バーよりも外観をカスタマイズできる度合いが高いことです。

次の図は、フラット スクロール バーを含むウィンドウを示しています。

screen shot of a window that contains a flat scroll bar

Note

フラット スクロール バーは、Comctl32.dll バージョン 4.71 から 5.82 でサポートされています。 Comctl32.dll バージョン 6.00 以降では、フラット スクロール バーはサポートされません。

 

フラット スクロール バーの使用

このセクションでは、アプリケーションでフラット スクロール バーを実装する方法について説明します。

始める前に

フラット スクロール バー関数を使用するには、ソース ファイルに Commctrl.h を含め、Comctl32.lib とリンクする必要があります。

ウィンドウへのフラット スクロール バーの追加

ウィンドウにフラット スクロール バーを追加するには、InitializeFlatSB を呼び出し、ハンドルをウィンドウに渡します。 標準のスクロール バー関数を使用してスクロール バーを操作する代わりに、同等の FlatSB_XXX 関数を使用する必要があります。 スクロールの情報、範囲、位置の設定および取得を行うための、フラット スクロール バー関数が用意されています。 ウィンドウでフラット スクロール バーが初期化されていない場合、フラット スクロール バー API は、対応する標準関数がある場合は、その関数に処理を任せます。 これにより、条件付きコードを記述しなくても、フラット スクロール バーのオンとオフを切り替えることができます。

アプリケーションでフラット スクロール バー用のカスタム メトリックを設定している可能性があるため、システム メトリックが変更されたときに自動的に更新されることはありません。 システム スクロール バーのメトリックが変更されると、wParamSPI_SETNONCLIENTMETRICS に設定された WM_SETTINGCHANGE メッセージがブロードキャストされます。 フラット スクロール バーを新しいシステム メトリックに合わせて更新するには、アプリケーションでこのメッセージを処理し、フラット スクロール バーのメトリックに依存するプロパティを明示的に変更する必要があります。

スクロール バーのプロパティを更新するには、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 プロパティを変更することで、使用するスクロール バーの種類を設定できます。 3 つのスタイルを使用できます。

Style 説明
FSB_ENCARTA_MODE 標準のフラット スクロール バーが表示されます。 マウス カーソルが方向ボタンまたはつまみの上に移動すると、スクロール バーのその部分が立体的に表示されます。
FSB_FLAT_MODE 標準のフラット スクロール バーが表示されます。 マウス カーソルが方向ボタンまたはつまみの上に移動すると、スクロール バーのその部分が反転色で表示されます。
FSB_REGULAR_MODE フラットではない通常のスクロール バーが表示されます。 特殊な視覚効果は適用されません。

 

フラット スクロール バーの削除

ウィンドウからフラット スクロール バーを削除する場合は、UninitializeFlatSB 関数を呼び出して、ハンドルをウィンドウに渡します。 この関数は、実行時にウィンドウからフラット スクロール バーを削除するだけです。 ウィンドウが破棄されるときに、この関数を呼び出す必要はありません。