// 垂直スクロールバー操作ハンドラサンプル // (C)2002 Yutaka Wada, AirparkLab void CDlgName::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { SCROLLINFO ScrollInfo; this->GetScrollInfo( SB_VERT, &ScrollInfo, SIF_ALL ); int NewPos; int Limit = this->GetScrollLimit( SB_VERT ); switch( nSBCode ){ case SB_TOP: // 上端へスクロール NewPos = ScrollInfo.nMin; break; case SB_LINEUP: // 上へスクロール NewPos = ScrollInfo.nPos - ScrollInfo.nPage / 4; break; case SB_LINEDOWN: // 下へスクロール NewPos = ScrollInfo.nPos + ScrollInfo.nPage / 4; break; case SB_PAGEUP: // 1ページ上へスクロール NewPos = ScrollInfo.nPos - ScrollInfo.nPage; break; case SB_PAGEDOWN: // 1 ページ下へスクロール NewPos = ScrollInfo.nPos + ScrollInfo.nPage; break; case SB_BOTTOM: // 下端へスクロール NewPos = Limit; break; case SB_THUMBPOSITION: // 絶対位置へスクロール(現在位置はnPos) NewPos = nPos; break; case SB_THUMBTRACK: // スクロール ボックスを指定位置へドラッグ(現在位置はnPos) NewPos = nPos; break; case SB_ENDSCROLL: // スクロール終了 return; } if( NewPos < ScrollInfo.nMin ) NewPos = ScrollInfo.nMin; if( NewPos > Limit ) NewPos = Limit; this->SetScrollPos( SB_VERT, NewPos, TRUE ); } // 水平スクロールバー操作ハンドラ void CEGZVDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { SCROLLINFO ScrollInfo; this->GetScrollInfo( SB_HORZ, &ScrollInfo, SIF_ALL ); int NewPos; int Limit = this->GetScrollLimit( SB_HORZ ); switch( nSBCode ){ case SB_LEFT: // 左端へスクロール NewPos = ScrollInfo.nMin; break; case SB_LINELEFT: // 左へスクロール NewPos = ScrollInfo.nPos - ScrollInfo.nPage / 4; break; case SB_LINERIGHT: // 右へスクロール NewPos = ScrollInfo.nPos + ScrollInfo.nPage / 4; break; case SB_PAGELEFT: // 1ページ左へスクロール NewPos = ScrollInfo.nPos - ScrollInfo.nPage; break; case SB_PAGERIGHT: // 1 ページ右へスクロール NewPos = ScrollInfo.nPos + ScrollInfo.nPage; break; case SB_RIGHT: // 右端へスクロール NewPos = Limit; break; case SB_THUMBPOSITION: // 絶対位置へスクロール(現在位置はnPos) NewPos = nPos; break; case SB_THUMBTRACK: // スクロール ボックスを指定位置へドラッグ(現在位置はnPos) NewPos = nPos; break; case SB_ENDSCROLL: // スクロール終了 return; } if( NewPos < ScrollInfo.nMin ) NewPos = ScrollInfo.nMin; if( NewPos > Limit ) NewPos = Limit; this->SetScrollPos( SB_HORZ, NewPos, TRUE ); }