戻る 第17章 コントロールの使用
(プログレスバー)
次へ

ソース 実行ファイル
sdk17.cpp sdk17.exe

今回はプログレスバーです。
長い処理やインストール時に時間の経過や達成度を表示する場合に
よく用いられますね。

今回もコモンコントロールになります。
includeにcommctrl.hを追加しライブラリにcomctl32.libを
追加する必要がありますので忘れないでください。
メッセージ 効果
PBM_SETPOS
wParam = 0;/* 新しい位置を設定*/
lParam = 0;/* 使われません。0でなければなりません*/
位置を設定する,直前の位置が返される
PBM_SETRANGE
wParam = 0;/* 使われません。0でなければなりません*/
lParam = 0;/* 範囲を設定(0〜65535)
最大値をHIWORDに最小値をLOWORD。*/
範囲を設定する。直前の最大値がハイワードに最小値がロウワードに返される
PBM_SETSTEP
wParam = 0;/* 新しいステップ値を入力*/
lParam = 0;/* 使われません。0でなければなりません*/
ステップ値を設定する。直前のステップ値が返される
PBM_STEPIT
wParam = 0;/* 使われません。0でなければなりません*/
lParam = 0;/* 使われません。0でなければなりません*/
ステップ分進む。
#include <windows.h> #include <commctrl.h>//コモンコントロールの使用の為 #pragma comment( lib,"comctl32.lib " )//コモンコントロールの使用の為 HWND pb;//アップダウンコントロール用 LRESULT CALLBACK WinProc(HWND hwnd, UINT msg,WPARAM wP, LPARAM lP) { switch(msg){ case WM_CREATE: pb=CreateWindowEx(0, PROGRESS_CLASS,//プログレスバーを指定 "", WS_CHILD| WS_BORDER, 32, 32,160, 24, hwnd, NULL, (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL); ShowWindow(pb,SW_SHOW); SendMessage(pb,PBM_SETRANGE,0,MAKELONG(0,255));//範囲を指定 SendMessage(pb,PBM_SETPOS,100,0);//現在値を設定 break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wP, lP); } return 0; }