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); }