• ベストアンサー

リストボックスについておしえてください

マウスの真ん中の回る部分をまわすと、IEなんかでは スクロールバーがうごきますよね これとおなじことはできないのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

サンプルです。 これはプロセス監視と呼ばれる方法で実現しています。 OSがソフトのピクチャボックスに送ってくるメッセージを読み取ることをしてますので、途中で中断しないでください。 中断すると落ちます。必ず「Form_QueryUnload」イベントを発生させるようにしてください。 こういったプロセス監視を行うと極めてデバッグしづらいのが特徴です。ぼくの場合は、ActiveX化することにより、デバッグがしづらくなるのを回避しています。その方が使いまわしが効くので便利ですよ。 サンプルではピクチャボックスを使用していますが、[.hWnd](ハンドル)が存在するものであれば、全てに適用できます。 必要なもの 標準モジュール フォーム └ピクチャボックス ------標準モジュール 開始------ Option Explicit Private Const WM_MOUSEWHEEL As Long = &H20A 'ホイールの回転 Private Const GWL_WNDPROC  As Long = (-4) Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private lngProc As Long Public Function WheelEvents(inWnd As Long, inMode As Boolean) As Boolean   '監視終了   Call SetWindowLong(inWnd, GWL_WNDPROC, lngProc)   lngProc = 0 'プロセスID初期化   If inMode Then     '監視開始     lngProc = SetWindowLong(inWnd, GWL_WNDPROC, AddressOf WheelProc)     If (lngProc = 0&) Then GoTo PGMERR   End If PGMEND:   WheelEvents = True   Exit Function PGMERR:   WheelEvents = False End Function Private Function WheelProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long   Select Case uMsg     Case WM_MOUSEWHEEL       If wParam = &H780000 Then         Debug.Print "ホイールを上にクルクル"       End If       If wParam = &HFF880000 Then         Debug.Print "ホイールを下にクルクル"       End If   End Select   WheelProc = CallWindowProc(lngProc, hwnd, uMsg, wParam, lParam) End Function ------標準モジュール 終了------ ------フォーム1 開始------ Option Explicit Private Sub Form_Load()   Call WheelEvents(Me.Picture1.hwnd, True) End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)   Call WheelEvents(Me.Picture1.hwnd, False) End Sub ------フォーム1 終了------

その他の回答 (1)

  • Yackn
  • ベストアンサー率42% (12/28)
回答No.1

リストボックスであるならば動くと思いますよ。 スクロールバーオブジェクトは動かないようですが。 (VB6 & win2000Proにて確認) VBでは真中ボタンのスクロールイベントは取得できないようです。(APIを除けばですが。) もし動かないようでしたらOSバージョンVBバージョンの補足を願います。

関連するQ&A

  • マウスホイールでテキストボックスのスクロールバーを

    マウスホイールでテキストボックスのスクロールバーを移動させたいです 帳票フォームにしています。 フォームのテキストボックスにスクロールバーありにしてるのですが そのテキストボックスがアクティブになった時に、 マウスホイールをクリクリした時に、 テキストボックスのスクロールバーを移動させたいのですが フォーム上スクロールバーが動いてしまいのレコードが移動してしまいます。 テキストボックスがアクティブの時に↓キーを押せばテキストボックスの スクロールバーは移動しますが、 マウスホイールで操作することは不可能でしょうか? テキストボックスには 1 2 3 4 5 6 7 8 9 10 がはいっています。

  • リストボックスの同期

    2つのリストボックスがならんでいて、両方のスクロールバーの移動を同期させたいのですが、可能なのでしょうか? 教えてください。使用プログラムはVB6です。

  • マウスをグリグリした時に、テキストボックスのス

    マウスをグリグリした時に、テキストボックスのスクロールバーを動かしたい アクセス2003です。 1レコードのには縦に あ い う え お と改行ありで5文字が入っていて、 2レコード目には か き く け こ と入力しています。 このテーブルを基に単票形式のフォームを作成しました。 そこにテキストボックスがあり、高さが多少あります。 テキストボックスにスクロールバーも付けました。 その状態で、マウスホイールをグリグリすると、次のレコードへ移動してしまいます。 そうではなくて、マウスホイールをグリグリした時に、 テキストボックスのスクロールバーを動かしたいのですがやり方を教えてください。 フォームのForm_Currentイベントで どうにかなりそうな気がするのですが、どうしていいかわかりません。

  • iflameのスクロールバーについて

    ページ内に、iflameでページを表示しようとしています。 縦に長いページなので、縦にだけスクロールバーを出したいのですが… <iframe src="http://...." width="600" height="400" scrolling="yes"></iframe> こんな感じに設定しています。 ウィンドウズIEではキレイに見えています。 ですが、マッキントッシュIEで見ると、スクロールバーが表示されません。 <iframe src="http://...." width="600" height="400" scrolling="auto"></iframe> にすると、マッキントッシュIEでもスクロールバーがきれいに表示されるのですが、 ウィンドウズIEで、必要のない下の部分(横部分)のスクロールバーまで出てしまいます。 この横スクロールバー、たとえ中味を短くしても、表示されるので…すごーく嫌なのです…。 マッキントッシュと、ウィンドウズ両方で、たて部分だけスクロールバーが出るようにする方法はあるのでしょうか?

    • ベストアンサー
    • HTML
  • IE5.5のスクロールバー

    IE5.5のスクロールバーですが 色が抜けて白くなってしまいました。 マウスでつかむ部分ではない、地の部分(??)です。 4.0からupdateした段階ではまともだったのですが。 ブラウズしているうちに突然そうなってしまいました。 マイコンピュータやエクスプローラでは きちんと表示されています。 また、IEでも「お気に入り」や「履歴」の表示では きちんと表示されます。 誰か、治し方、わかるでしょうか? 一応、safeモードで起動してみたりしましたが 治りません。 (IEの再インストールは試していません)

  • Access2000のリストボックスでスクロール

    Access2000のリストボックスについてご質問致します。 リストボックス上にマウスポインタを持って行ったとき、スクロールを有効にする(スクロールができる)ようにすることは可能でしょうか。可能な場合、その方法を教えてください。 現状、リストボックス内の任意のデータを選択してから出ないとスクロールできません。 宜しくお願い致します。

  • ペイントでの切り取り

    ペイント使用時に、大きいファイルだと、縦、横、にスクロールバーがでます。 切り取りをする時に、スクロールバーで隠れた部分も切り取りする時、マウスを使う為、出来ません。 (画面に見える部分と、画面の隠れた部分を切り取りたい) キーボードで、スクロールバーを動かす事は出来るのでしょうか?

  • Excelリストボックスについて

    ExcelVBAのリストボックスで質問!! (1)列に項目名称をつけたいのですが、どうすればよいでしょうか? ちなみにリストの値は別ファイルかVBAにくみこみたいと思っています。 (2)ホイール(マウス)によるスクロールは行えないのでしょうか?方法があれば教えてください。

  • ビスタですネットの画面でスクロールすると

    ビスタですネットの画面でマウスの真ん中にある ボタンででスクロールすると 画面がぱっと変わってしまったり、 揺れ動きます。 画面が変わるというのは、スクロールすると一番上から 下の画面に急に変わったり、 「戻る」を押していないのに、スクロールすると 以前見ていた画面に戻ったりします。 インターネット以外ではこのようなことはありません。 マウスで操作したらこのようになるので マウスをスクロールバーに持って行ってスクロールしているのですが、 とても遅くてイライラします。 PCは32 ビットです。メモリは2GB。サービスパック2です よろしくお願いいたします。

  • マウスのスクロールボタンで画面上で下に動かない

    Alps pointing device driver version:7.0.402.3 PC: FMV-Biblo NF60T WindowsXP 数日前からマウスが画面上(ウィンドウ内)でスクロールボタンを使って下にスクロールできません。上には動きます。画面の一番右にある上下に動かせるバーをポイントして、下には動かせます。あと一旦その右横のバーで一番下に下げてからだと、マウスのスクロールボタンでもウインドウ内(画面上)で上に動きます。しかし又下に下げようとしてもマウスのスクロールボタンでは出来ません(右横のバーの位置がもし丁度真ん中なら、そこからトップまではウィンドウ内(画面上)でスクロールボタンで上に動く)。 どうしたら直せるか、可能性があれば教えていただけますか?

専門家に質問してみよう