掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スクロールするには? (ID:57182)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
BOOL CUKScrollBarDlg::OnInitDialog() { CDialog::OnInitDialog(); …… // TODO: 特別な初期化を行う時はこの場所に追加してください。 // m_hscroll1はCScrollBarクラスの水平スクロールバー。ClassWizardで設定する m_hscroll1.SetScrollRange(-20, 20); m_hscroll1.SetScrollPos(0); return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。 } これでスクロールバーの左端が-20、右端が20となり、初期位置は0(つまりスクロールバーの中央)に設定される。 スクロールバー上でスクロールボックスをドラッグさせたり、両端の矢印をクリックするなどしてスクロールを実行すると、親ウィンドウにWM_HSCROLLメッセージ(垂直スクロールバーの場合はWM_VSCROLL)が送られる。親ウィンドウのOnHScrollハンドラをカスタマイズすることで、このメッセージを取得、操作することができる。 void CUKScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください int iPos = pScrollBar->GetScrollPos(); int iMin, iMax; pScrollBar->GetScrollRange(&iMin, &iMax); switch(nSBCode) { case SB_LINELEFT: // 左端の矢印をクリックした場合(または←キー) iPos--; if( iPos < iMin ) iPos = iMin; break; case SB_LINERIGHT: // 右端の矢印をクリックした場合(または→キー) iPos++; if( iPos > iMax ) iPos = iMax; break; case SB_PAGELEFT: // スクロールボックスの左側をクリックした場合(またはPageUpキー) iPos -= 10; if( iPos < iMin ) iPos = iMin; break; case SB_PAGERIGHT: // スクロールボックスの右側をクリックした場合(またはPageDownキー) iPos += 10; if( iPos > iMax ) iPos = iMax; break; case SB_THUMBPOSITION: // スクロールボックスを絶対移動させた場合 case SB_THUMBTRACK: // スクロールボックスをドラッグ移動させた場合 iPos = nPos; break; } pScrollBar->SetScrollPos(iPos); // デフォルトの処理は実行せずにコメント化する // CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } 遅れて申し訳ないです。このソースで試してみたら、バーしか動きませんでした。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.