SBS_HORZで水平スクロールバー
CScrollBar bar;
・・・
int Test::OnCreate(LPCREATESTRUCT lpCreateStruct)
bar.Create( SBS_HORZ , RECT( スクロールバーの座標 ) , this , <ユニークな数値> );
bar.SetScrollRange(0,255); // 幅設定
bar.ShowWindow( SW_SHOW );
・・・
}
・・・
#define SCROLLPIXEL 4
void Test::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
// bar
if ( pScrollBar == &bar ){
int nMax,nMin
switch( nSBCode ){
case SB_LEFT: // 左端へスクロール。
bar.GetScrollRange( &nMin , &nMax );
bar.SetScrollPos( nMin );
break;
case SB_LINELEFT: // 左へスクロール。
bar.SetScrollPos( max( 0 , bar.GetScrollPos() - SCROLLPIXEL ));
//redrawGraph();
break;
case SB_LINERIGHT: // 右へスクロール。
bar.SetScrollPos( bar.GetScrollPos() + SCROLLPIXEL );
//redrawGraph();
break;
case SB_PAGELEFT: // 1 ページ左へスクロール。
bar.SetScrollPos( max( 0 , bar.GetScrollPos() - ( SCROLLPIXEL * 4 ) /*nPage*/ ));
//redrawGraph();
break;
case SB_PAGERIGHT: // 1 ページ右へスクロール。
bar.SetScrollPos( bar.GetScrollPos() + ( SCROLLPIXEL * 4 ) /*nPage*/ );
//redrawGraph();
break;
case SB_RIGHT: // 右端へスクロール。
bar.GetScrollRange( &nMin , &nMax );
bar.SetScrollPos( nMax );
break;
case SB_THUMBPOSITION: // 絶対位置へスクロール。現在位置は引数 nPos で指定されます。
bar.SetScrollPos( nPos );
break;
case SB_THUMBTRACK: // スクロール ボックスを指定位置へドラッグします。現在位置は引数 nPos で指定されます。
bar.SetScrollPos( nPos );
break;
case SB_ENDSCROLL: // スクロール終了。
break;
}
}
CWnd::OnHScroll(nSBCode, nPos, pScrollBar);
}