人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

なぜ、7864322と7864318なのですか?この数字は一体何者ですか?気持ち悪いです。


HHOCKにSetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,0,GetCurrentThreadID);をインストールして、マウスホイールの動きを捉えています。


PMsg^.messageは、WM_MOUSEWHEELです。
ここまではOKです。


Msg^.WParamにIntegerがあります。
ホイール上方向ぐりぐりなら「7864322」で、
ホイール下方向ぐりぐりなら「7864318」です。

なぜ、7864322と7864318なのですか?この数字は一体何者ですか?気持ち悪いです。
また、このIntegerをif 7864322とif 7864318で分岐させて大丈夫ですか?(環境によって他の数字が来たりしませんか?)



質問文が滅茶苦茶ですが、以心伝心してください。日本語とても難しいです。環境はdelphi6personalです。

●質問者: SuzukiU
●カテゴリ:コンピュータ
✍キーワード:MESSAGE インストール ホイール マウス 上方
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ardarim
●77ポイント ベストアンサー

WM_MOUSEWHEEL通知に対する、wParamの意味は次のとおりです。

上位16ビット:ホイールの回転距離。正の値なら前方向(上方向)の回転、負の値なら後ろ方向(下方向)の回転。120の倍数となる。

下位16ビット:一緒に押されたキーの情報。以下の値のOR値(合計値)になる。

1マウスの左ボタン
2マウスの右ボタン
4SHIFTキー
8CTRLキー
16マウスの中央ボタン
321番目のXボタン
642番目のXボタン


7864322の場合

16進数に直すと、0x00780002となる。上位16ビットは0x0078で10進数に戻すと+120。下位16ビットは0x0002で、つまりマウスの右ボタンが押されていると解釈します。


-7864318の場合(※)

16進数に直すと、0xFF880002となる。上位16ビットは0xFF88で10進数に戻すと-120。下位16ビットは0x0002で、つまりマウスの右ボタンが押されていると解釈します。


※質問どおり7864318(正数)だとすると解釈が矛盾します。正しくは負数ではないですか?上記回答では負数として解釈しました。


上記のようになりますので、if 7864322とif 7864318で分岐すると正しく処理できない場合があります。

delphiは使ったことがないので文法がわかりませんが、wParamの値から上位16ビット分を取り出して、その値が正数か負数かで上方向か下方向かを判断する必要があります。

◎質問者からの返答

お手数おかけして申し訳ございません。おっしゃるとおり、右ボタン押し下げ時のwParamの値でした。たいへんよくわかりました。完璧です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ