スピンコントロール

数値を入力させるときアップダウンコントロールを使うと
制御が簡単です。今回はそれにバディウィンドウを
関連付けて制御をもっと簡単にしましょう。VB4以下でもOKです。
スピンコントロールとしてありますがアップダウンコントロールと同じです
全 体 の 流 れ
@Formにアップダウンコントロールウィンドウを作成
これだけでカウントできます。しかも最大・最小値などの監視も全部やってくれます。
スピンコントロールの作成
スピンコントロールを作成するにはCreateWindowEx()関数でもできますが
CreateUpDownControls()関数のがまとめられていて便利です。
スピンコントロールのスタイル
CreateUpDownControls()関数でウィンドウを作成するとき
スタイルにWS_CHILD,WS_VISIBLE,WS_BORDERのいずれかの
標準メッセージを一つ含めなければないません。サンプルでは全部指定しています。
(そのほうが便利だし...。)
またこれに加えて以下のスタイルを同時に複数指定することができます。
スタイル内容
UDS_ALIGNLEFTバディウィンドウの左側に
アップダウンコントロールを配置する
UDS_ALIGNRIGHTバディウィンドウの右側に
アップダウンコントロールを配置する
UDS_ARROWKEYS矢印キーを有効にする
(矢印キーを使って移動可能にする)
UDS_AUTOBUDYZオーダーにおける前のウィンドウをバディウィンドウとする
UDS_HORZ = &H40アップダウンコントロールを水平に置く
(デフォルトでは垂直に置かれる)
UDS_NOTHOUSANDS = &H80大きい値をバディウィンドウに表示するとき
コンマを表示しない
(スピンコントロールのときのみ有効)
UDS_SETBUDDYINT = &H2コントロールの位置が変化したとき
バディウィンドウ内のテキストを自動的に設定する
これによりスピンコントロールの
現在位置をバディウィンドウに表示することができる
UDS_WRAP = &H1端に達したときアップダウンコントロールの位置を折り返す
メッセージの送信
スピンコントロールにメッセージを送るにはSendMessage()関数を使います。
基本的に送るメッセージは以下のとおりです(全部ではないです)。
メッセージ意味wParamlParam戻り値
UDM_GETBUDDYバディウィンドウのハンドル取得00バディウィンドウのハンドル
UDM_GETPOS現在の位置(カウント)を取得00下位ワードに格納されている
UDM_GETRANGE現在の範囲を取得00下位ワードに最大値
上位ワードに最小値
UDM_SETBUDDY新しいバディウィンドを指定新しいハンドル0以前のバディウィンドウのハンドル
UDM_SETPOS現在の位置(カウント)を設定0新しい位置以前の位置
UDM_SETRANGE現在の範囲を設定0下位ワードに最大値
上位ワードに最小値
以前の範囲
バディウィンドウとは相互にリンク付けられたウィンドウのことです。
つまりテキストボックスなどの表示するウィンドウなどです。
基本的にスピンコントロールはメッセージを送信するがありません
サンプル
ダウンロード(CreateUpDownControl2.lzh 2.94KB)
Private Sub Form_Load()
'アップダウンコントロールを作成する
hUpDownWnd = CreateUpDownControl(WS_CHILD Or WS_BORDER Or WS_VISIBLE _
    Or UDS_SETBUDDYINT Or UDS_ALIGNRIGHT, _
    10, 10, 50, 50, Me.hWnd, 100, App.hInstance, Me.Text1.hWnd, 100, 0, 50)
End Sub