掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
データグリッドの縦スクロールバーで32594以上スクロールさせるには? (ID:120392)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自己レスです。 データグリッドをサブクラス化し、 WM_VSCROLL、SB_THUMBTRACK時の 動作を強制的にスクロールするように 考えてみました。 Private Function WindowProc( _ ByVal hWnd As Long, _ ByVal uMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Dim Lo As Long Dim Hi As Long Select Case uMsg Case WM_VSCROLL 'wParamの下位ワード:スクロール操作 'wParamの上位ワード:ドラッグドロップ量 Lo = LOWORD(wParam) Hi = HIWORD(wParam) Select Case Lo Case SB_LINEUP Me.DateGrid1.Scroll 0, -1 Case SB_LINEDOWN Me.DateGrid1.Scroll 0, 1 Case SB_PAGEUP Me.DateGrid1.Scroll 0, -Me.DateGrid1.VisibleRows Case SB_PAGEDOWN Me.DateGrid1.Scroll 0, Me.DateGrid1.VisibleRows Case SB_THUMBPOSITION Me.DateGrid1.Scroll 0, Hi End Select End Select WindowProc = CallWindowProc(P_hwndNext, hWnd, uMsg, wParam, lParam) End Function '下位ワードの取得 Public Function LOWORD(lng As Long) As Integer CopyMemory LOWORD, lng, 2 End Function '上位ワードの取得 Public Function HIWORD(lng As Long) As Integer CopyMemory HIWORD, ByVal VarPtr(lng) + 2, 2 End Function 上記のような関数を作成している途中で気がつきましたが、 WindowProcのwParamがLongで、 wParamの上位ワードがスクロール量なので、 基本的にIntegerを超える量はスクロールさせることは 不可能なのでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.