スクロールバーを追加するときに追加しなくちゃいけないコード

VC++6。コードはあくまでサンプル。

メンバ変数としてCScrollBarを追加

CScrollBar m_wndScrollLR

resource.hにID追加

#define IDC_WNDSCROLLLR                 7050

汎用的なサイズ設定関数の作成。
ことあるごとに呼ぶことになる。

#define HSCROLLBAR_HIGHT (16)

void ***::SetSize(){
 // スクロールバー
 if( ::IsWindow( m_wndScrollLR.m_hWnd ) ){
  tmpRect = baseRect;
  tmpRect.top = tmpRect.bottom  - HSCROLLBAR_HIGHT;
  m_wndScrollLR.MoveWindow( &tmpRect );
 }
}

OnCreate()でCreateする

CRect baseRect;
GetClientRect( baseRect );
・・・
m_wndScrollLR.Create( SBS_HORZ , baseRect , this , IDC_WNDSCROLLLR ); // 水平スクロールバー
m_wndScrollLR.ShowWindow( SW_SHOW );

this->SetSize();

ウィザードでWM_HSCROLLを選びOnHScroll関数追加

#define SCROLLPIXEL (1)
#define PAGESCROLLPIXEL (SCROLLPIXEL*4) 
void ***::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{

 //if ( pScrollBar == &m_wndScrollLR )
 {
  int nMax,nMin/*,nPage*/;
  switch( nSBCode ){
  case SB_LEFT:   // 左端へスクロール。
   pScrollBar->GetScrollRange( &nMin , &nMax );
   pScrollBar->SetScrollPos( nMin );
   //redrawGraph();
   break;
  case SB_LINELEFT:  // 左へスクロール。
   pScrollBar->SetScrollPos( max( 0 , pScrollBar->GetScrollPos() - SCROLLPIXEL ));
   //redrawGraph();
   break;
  case SB_LINERIGHT:  // 右へスクロール。
   pScrollBar->SetScrollPos( pScrollBar->GetScrollPos() + SCROLLPIXEL );
   //redrawGraph();
   break;
  case SB_PAGELEFT:  // 1 ページ左へスクロール。
   pScrollBar->SetScrollPos( max( 0 , pScrollBar->GetScrollPos() - PAGESCROLLPIXEL /*nPage*/ ));
   //redrawGraph();
   break;
  case SB_PAGERIGHT:  // 1 ページ右へスクロール。
   pScrollBar->SetScrollPos( pScrollBar->GetScrollPos() + PAGESCROLLPIXEL /*nPage*/ );
   //redrawGraph();
   break;
  case SB_RIGHT:   // 右端へスクロール。
   pScrollBar->GetScrollRange( &nMin , &nMax );
   pScrollBar->SetScrollPos( nMax );
   //redrawGraph();
   break;
  case SB_THUMBPOSITION: // 絶対位置へスクロール。現在位置は引数 nPos で指定されます。
   pScrollBar->SetScrollPos( nPos );
   //redrawGraph();
   break;
  case SB_THUMBTRACK:  // スクロール ボックスを指定位置へドラッグします。現在位置は引数 nPos で指定されます。 
   pScrollBar->SetScrollPos( nPos );
   //redrawGraph();
   break;
  case SB_ENDSCROLL:  // スクロール終了。
   break;
  }
 }
・・・・
}