掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OnMouseWheelを繰り返し処理をさせない為には? (ID:6178)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>Halbowさん HalbowさんのWEBページのサンプル処理関数のままでは、 > 上記のプログラム実行中にマウスホイールを最小の単位で動かすと、 > 右図のように WM_VSCROLL が送られてきて・・・ が起きません。かなものさんと同様ですね。 以下のように WM_MOUSEWHEELの処理を追加しないとホイールでのスクロールは出来ませんです。 もし、Halbowさんの環境で、このようにした場合に何か不具合は起きるでしょうか? procedure TForm1.SubclassProc(var Msg: TMessage); begin OriginalProc(Msg); case Msg.Msg of WM_VSCROLL : ScrollBox1VScroll(TWMScroll(Msg)); WM_HSCROLL : ScrollBox1HScroll(TWMScroll(Msg)); WM_MOUSEWHEEL: begin case HiWord(Msg.WParam) of $0078: ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_LINEUP,0), 0); $FF88: ScrollBox1.Perform(WM_VSCROLL, MakeWParam(SB_LINEDOWN,0), 0); end; // 一応Messageを確認 Memo1.Lines.Add(Format('Msg = $%4x $%8x $%8x',[Msg.Msg, Msg.WParam, Msg.LParam])); end; end; end; procedure TForm1.ScrollBox1Click(Sender: TObject); begin ScrollBox1.SetFocus; end; なお、こちらのマウスドライバは以下の通りで、標準PS/2ポートマウスです。 VMM32.vxd(vmouse.vxd) MSMOUSE.vxd MOUSE.drv 出来ましたら、ScrollBox内にLabelを貼り付けただけで Wheelのハンドラを書かない状態で、 Halbowさんの環境でコンパイルした実行ファイルをどこかにUPしてもらえないでしょうか? それをこちらでDLして実行してみたいのですが... もし、それでホイールのスクロールが出来れば、Delphiのバージョンに原因がある可能性があり、 ホイールのスクロールが出来なければ、環境(マウス/ドライバ)に原因があると推定出来ますね。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.