次の方法で共有


進行状況バー コントロールについて

進行状況バーは、アプリケーションが長い操作の進行状況を示すために使用できるウィンドウです。

操作が進行するとアニメーション化される矩形で構成されます。

次の図は、ビジュアル スタイルを使用しない進行状況バーを示しています。

screen shot of a progress bar that adds rectangles in a line to indicate progress

次の図は、ビジュアル スタイルを使用した進行状況バーを示しています。 コントロールの外観は、オペレーティング システムと選択したテーマによって異なります。 詳細については、「ビジュアル スタイル」を参照してください。

screen shot of a progress bar that lengthens an animated green rectangle to indicate progress

詳細は、次の見出しに記載されています。

進行状況バーの使用

CreateWindowEx 関数を使用して、PROGRESS_CLASS ウィンドウ クラスを指定すると、進行状況バーを作成できます。 このウィンドウ クラスは、共通コントロール DLL が読み込まれるときに登録されます。 詳細については、「一般的なパラメーターについて」を参照してください。

このコントロールは、プログレス コントロールと呼ばれる Microsoft Visual Studio ツールボックスでも使用できます。

範囲と現在の位置

進行状況バーの範囲は、操作の全期間を表し、現在の位置は、アプリケーションが行った操作完了までの進捗を表します。 ウィンドウ プロシージャでは、範囲と現在位置を使用して、強調表示の色で塗りつぶす進行状況バーの割合を決定します。

範囲の値を設定しない場合、システムによって、最大値が 0、最小値が 100 に設定されます。 PBM_SETRANGE メッセージを使用して、範囲を便利な整数に調整できます。

進行状況バーには、現在の位置を設定するために使用できるいくつかのメッセージが表示されます。 PBM_SETPOS メッセージは、位置を指定された値に設定します。 PBM_DELTAPOS メッセージは、指定した値を現在の位置に追加して位置を進めます。

PBM_SETSTEP メッセージを使用すると、進行状況バーのステップ増分を指定できます。 その後、PBM_STEPIT メッセージを進行状況バーに送信するたびに、現在の位置は指定した増分だけ進みます。 既定では、ステップの増分は 10 に設定されます。

既定の進行状況バーのメッセージ処理

ここでは、PROGRESS_CLASS クラスのウィンドウ プロシージャが処理するメッセージについて説明します。

メッセージ 処理の実行
WM_CREATE 初期構造体を割り当てて初期化します。
WM_DESTROY 進行状況バーに関連付けられているすべてのリソースを解放します。
WM_ERASEBKGND 進行状況バーの背景と境界線を描画します。
WM_GETFONT 現在のフォントのハンドルを返します。 進行状況バーは現在テキストを描画しないため、このメッセージを送信してもコントロールには影響しません。
WM_PAINT 進行状況バーを描画します。 wParam パラメーターが NULL 以外の場合、コントロールは値が HDC であることを前提とし、そのデバイス コンテキストを使用して描画します。
WM_SETFONT ハンドルを新しいフォントに保存し、前のフォントにハンドルを返します。 進行状況バーは現在テキストを描画しないため、このメッセージを送信してもコントロールには影響しません。

 

マーキー スタイル

PBS_MARQUEE スタイルを使用して進行状況バー コントロールを作成すると、アクティビティを示す方法でアニメーション化できますが、タスクの完了率は示されません。 進行状況バーの強調表示された部分は、バーの長さに沿って繰り返し移動します。 PBM_SETMARQUEE メッセージを送信することで、アニメーションを開始/停止し、その速度を制御できます。 マーキー 進行状況バーには、範囲または位置はありません。

次の図は、マーキー モードの進行状況バーを示しています。 強調表示されたパーツがバーを横切って移動します。

screen shot of a progress bar that moves a green highlight across a gray rectangle to indicate progress