スクロールビューのスクロールについて – プログラミング – Home

スクロールビューのスクロールについて
 
通知
すべてクリア

スクロールビューのスクロールについて


むっく
 むっく
(@むっく)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

OS 2000SP4 VC++6.0/MFCです。

SDIでバイナリビューアを作成しています。
アドレスを常に表示したいので、スクロールした際に現在のスクロールの位置をとりたいのです
が、マウスホイールでスクロールした際に前回のスクロールの位置しかとれません。

コードは以下のように記述しています。

// マウスホイール回転時
BOOL CBinaryViewerView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
m_ptHeader = GetDeviceScrollPosition();
Invalidate(TRUE);
return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}

あとスクロールボックスをクリックしたままスライドさせてスクロールした際に、スクロールを
1行毎に行ないたいのですが、どのようにしたらいいのでしょうか?
1行の高さは18ピクセルです。

以上,2点よろしくお願いします。


引用解決済
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

OnMouseWheelではOnVScrollに引き渡すだけにすればいいのでは?

BOOL CBinaryViewerView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
this->OnVScroll((zDelta >= 0) ? SB_LINEUP : SB_LINEDOWN,
0, this->GetScrollBarCtrl(SB_VERT));
return CView::OnMouseWheel(nFlags, zDelta, pt);
}

でもって、どれぐらいスクロールさせるかはOnVScrollでnSBCodeで切り分けて処理させ
る。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

すみません、CScrollViewが既定クラスだったのですね。
CViewだと思って解答してしまいました。

ということで、私の発言は間違っているかもしれないです。


返信引用
むっく
 むっく
(@むっく)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

回答ありがとうございます。

記述していただいたものでうまくいってました。

私が記述したものなんですが、スクロール移動前に位置を取得してるので前回のものしか取れな
いはずですね。
凡ミスでした・・・。

どれくらいスクロールさせるかというのがまだうまくいかないです。
うーん・・・。


返信引用
むっく
 むっく
(@むっく)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

現在のコードです。

void CBinaryViewerView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar*
pScrollBar)
{
CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
m_ptHeader = GetScrollPosition();
Invalidate(TRUE);
}

スクロールボックスをドラッグした場合1ピクセルごとに移動し、位置も取れています。
1行(18ピクセルごとに)移動するにはどうしたらよいでしょうか?

nSBCodeやnPosいじってみましたがうまくいきませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました