掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OnMouseWheelを繰り返し処理をさせない為には? (ID:6185)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Halbow です。 (‾◇‾) さん、ありがとうございます。 > 今回の件は大きな収穫でした。ありがとうございましたm(__)m いや、そういっていただける方がおられると、心安まります。 わたしの「特殊環境」のせいでここもずいぶんと長いスレッドになり、恐縮しています。 > 時間ができたらUSB接続にしてみます。 これ帰宅してやってみました。みごとに、皆さんと同じように、コードなしでは動作しなく なりました。上の推測が当たっていたようです。アダプタを介して PS2 接続をすると、 「ホイールに対応していない古い環境なのかも知れない」と気を利かして、WM_MOUSEWHEEL のかわりに WM_VSCROLL をおくってくれるようですね。気が付きませんでした。 ちかじか、わたしの HP にもここでのやりとりを引用して「追記」しておきます。 スレ主のかなものさんの問題の件とは直接関係ないのに、みなさんからいろいろコメントを いただいて感激いたしました。それですこし勉強しました。 MSDN の WM_MOUSEWHEEL Notification の項には The WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is rotated. The DefWindowProc function propagates the message to the window's parent. There should be no internal forwarding of the message, since DefWindowProc propagates it up the parent chain until it finds a window that processes it. と最初に書かれています。超訳すると マウスホイールを回転させると WM_MOUSEWHEEL メッセージがフォーカスのあるウィンドウに 送られます。DefWindowProc は、このメッセージを親の連鎖を辿って伝えます。メッセージを 転送するコードを書かなくても、このメッセージを処理して DefWindowProc を呼び出さない ようにするまで親への伝達は続きます。 VCL では TWinControl の派生クラスに OnMouseWheel OnMouseWheelDown OnMouseWheelUp のイベントがあり、そのそれぞれに var Handled: Boolean が引数としてあります。これが さらに親の連鎖へメッセージを転送するかどうか、つまり、DefWindowProc を実行するかどうか を決めているんですね。ヘルプの Handled は,コントロールがイベントを処理したかどうかを示します。Handled を False に設定すると,オブジェクトの親がイベントを処理するようにすることができます。 の部分は、逆に読むと Handled を True に設定すると、ここで処理を打ち切ることができる、 という意味ですね。 ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.