スライダーコントロールの使い方
2013年10月5日:MFC
ある数値を視覚的に変更できるようにしたい場合にスライダーコントロールは便利です。
具体的には以下のようなものがスライダーコントロールです。
レバーを右にドラッグすれば、それに応じて値を上昇させることができます。
このスライダーコントロールの使い方を紹介します。
設置とプロパティ
では、ツールボックスからスライダーコントロールを選び、ドラッグ&ドロップで設置します。
設置が終わったらプロパティを設定します。以下にプロパティの意味を紹介します。
- ID:コントロールの名前です。
- Orientation:レバーの方向を水平方向か垂直方向かに設定します。
- Disabled:有効(flase)か無効(true)かを設定します。
- Visible:見える(true)か見えない(flase)かを設定します。
スライダーコントロールのポインタは
((CSliderCtrl*)GetDlgItem(スライダーのID))
により取得できます。ただ、いちいちこの方法で取得するのが面倒な場合は、スライダを右クリックして「変数の追加」を選択します。そして、変数名に「m_sldr」を入力して完了を押します。
すると、
m_sldr.命令
で簡単にスライダを制御できます。
スライダを制御する
では、スライダの動きをコーディングします。
スライダの最大値と最小値の設定
スライダの最大値や最小値の設定は
m_sldr.SetRange(最小値,最大値);
でできます。そして、スライダの値は
m_sldr.SetPos(値);
で設定できます。値を取得したい場合は
int pos=m_sldr.GetPos();
となります。
イベント
スライダが移動した場合のイベントは
- 水平スライダの場合「WM_HSCROLL」、H=Horizontal(水平)
- 垂直スライダの場合「WM_VSCROLL」、V=Vertical(垂直)
となります。これらのイベントを記述したい場合は、左の方にあるクラスビューから追加したいクラスを選択します。そして、プロパティからWM_HSCROLLか、WM_VSCROLLを選択します。
すると、OnHScrollのイベントを記述できるようになります。
このイベントは、スライダーが実行されたときに生じます。
他の水平スクロールを区別したいのでコードでは
if(pScrollBar==(CScrollBar*)&m_sldr){
命令;
}
とします。こうすることで、m_sldrが実行した際の命令を記述できます。
最後に
スライダーコントロールはエディットコントロールと比べてイベントの記述法が少しやっかいです。
ただ、使い慣れれば、簡単なのでどんどん使っていくといいでしょう。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー