プログレスバー
インストールのときに全体の作業率を表示するプログレスバーを
Visual BasicでAPIだけで実現するサンプルです。
コモンコントロールシリーズで特に簡単に作れるサンプルです。
全 体 の 流 れ
| @Formにプログレスバーウィンドウを作成 |
| A数値の範囲とステップを設定 |
| これだけでカウントできます。簡単でしょ。 |
プログレスバーメッセージの送信
プログレスバーにメッセージを送るにはSendMessage()関数を使います。
基本的に送るメッセージは以下のとおりです。
| メッセージ | 意味 | wParam | lParam | 戻り値 |
| PBM_SETRANGE | 範囲を設定する | 0 | 上位ワードに最大値下位ワードに最小値 | 以前の範囲 |
| PBM_SETPOS | プログレスバーの位置を設定する | 新しい位置 | 0 | 以前の位置 |
| PBM_SETSTEP | ステップを設定する | 新しいステップ値 | 0 | 以前のステップ |
| PBM_STEPIT | ステップ値単位で1つ進める | 0 | 0 | 0 |
デフォルトの範囲は0〜100になっていますが、プログラムから0〜65,535まで設定可能です。
一般的にはプログレスバーを勧める場合はPBM_STEPITメッセージを送ります。
プログレスバーは設定されているステップにしたがってプログレスバーを進めます。
デフォルトのステップ値は10です。
プログレスバーのスタイル
プログレスバーにはもともとはスタイルオプションがありませんでした。
Windows95以降にスタイルオプションが追加されて滑らかなプログレスバーと
垂直プログレスバーが可能になりました。
滑らかなプログレスバーのスタイルはPBS_SMOOTHを指定します。
垂直なプログレスバーのスタイルはPBS_VERTICALを指定します。
サンプルでは滑らかなプログレスバーを実現しています。
サンプル
ダウンロード(ProgressBar.lzh 4.36KB)
Dim cnt As Long
Private Sub Command1_Click()
Call SendMessage(hProgWnd, PBM_SETPOS, 0, 0)
cnt = 0
Me.Timer1.Interval = 100
Me.Timer1.Enabled = True
Me.Command1.Enabled = False
End Sub
Private Sub Form_Load()
Me.Timer1.Enabled = False
Dim cc As tagINITCOMMONCONTROLSEX
cc.dwSize = Len(cc)
cc.dwICC = ICC_PROGRESS_CLASS
hProgWnd = CreateWindowEx(0, PROGRESS_CLASS, "Progress Bar", _
WS_CHILD Or WS_VISIBLE Or WS_BORDER Or PBS_SMOOTH, _
10, 10, 290, 20, Me.hWnd, 0, App.hInstance, 0)
Call SendMessage(hProgWnd, PBM_SETRANGE, 0, GetLong(100, 0))
Call SendMessage(hProgWnd, PBM_SETSTEP, 1, 0)
End Sub
Private Sub Timer1_Timer()
cnt = cnt + 1
Call SendMessage(hProgWnd, PBM_SETPOS, cnt, 0)
Me.Label1.Caption = Str(cnt) + "%"
If cnt > 99 Then
cnt = 0
Me.Timer1.Enabled = False
Me.Command1.Enabled = True
MsgBox "終了しました"
End If
End Sub