掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
マウスの中央のボタンのイベントを取得するには? (ID:15787)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> すなわち、WM_MOUSEWHEELで取得できるイベントの範囲がずれているため WM_MOUSEWHEELの仕様については。MSサイトでは、探し方が悪く見つけることができませんでしたが、 ここ(http://www.maa.spacetown.ne.jp/~fool/programer/memo/api32_memo.html)によると、 ホイール系のメッセージは、スクリーン座標がとんでくる仕様っぽいですね。 WM_MOUSEMOVEとかは、コントロールのクライアント座標なのに・・・。 そのため、正しくホイールメッセージが取得できないわけです。 > 補正するのは簡単でしょ。なんで悩むのか不思議。 座標の補正をすべきなのは、メッセージを受け取ったコントロールなので、 自分(TMyPaintBox)からは、どうしようもできないってことでしょう。 もしできるなら、ApplicationのOnMessageでWM_MOUSEWHEEL捕まえて、 補正をかけるくらいじゃないかと。 どうしてもコンポーネントでなんとかしないのであれば、動くかわかりませんが、 以下のようにしてみるのはどうでしょう。 ただし、記憶だけで書いてるため、作ってみるなら詳細は調べてみて欲しいです。 1)TMyPaintBoxで、メッセージ受信専用ウィンドウ(=MyHandle)を用意。 ここ http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N007.html 参照。 2)WM_WOUSEENTERかCM_WOUSEENTERあたりで、SetFocus(MyHandle)して、 MOUSELEAVEで、SetFocus(Screen.ActiveControl)する。 3)SetFocus(MyHandle)しておけば、メッセージ受信専用ウィンドウ宛に WM_MOUSEWHEELがとんでくる(はず)なので、そこで処理する。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.