- ベストアンサー
無償BorlandC++5.5でAPI(SDK)を使って
BuilderやMFCを使わずにGUIアプリを作っていますが 2ボタンマウス用のプログラムを 3ボタンホイールマウスのホイール回しに対応したいのですが ホイールを2方向それぞれ回したときに 発生する「メッセージ」を教えてください そのメッセージを受けてスクロールメッセージに書いてあるコマンド群を実行するようにしたいのです
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
使えるでしょう。 OS が、WM_MOUSEWHEEL メッセージをよこしてくるのに対応させればいいでしょう。 ただ、BorlandC++ の header file に WM_MOUSEWHEEL の定義がないだけでしょう。 (私も win98 で使っているので、VC++ 6.0 を更新してなくて、WM_MOUSEWHEEL の定義はないままです。) このメッセージの WParam の HIWORD を short で取り出すと、 上下の方向は +- で、回転数は、1ノッチ当たり 120 で 出てきますので、24 で割って、その値を scroll の SB_LINEUP, SB_LINEDOWN に渡し、1ノッチ 120/24=5行の スクロールにしています。(5行は好み。環境設定で選べるようにしても良いでしょう)
その他の回答 (4)
- sha-girl
- ベストアンサー率52% (430/816)
>において >expressed in multiples or divisions of WHEEL_DELTA, which is 120. >のところはどう言う意味なのでしょうか? 既にmcWalkerさんがほとんど答えていますが WHEEL_DELTAとは回転量を表すものらしいです。 VisualC++2003の場合ですがZMouse.hの中に #define WHEEL_DELTA 120 が定義されています。 ちなみに#define WM_MOUSEWHEEL 0x020AもZMouse.hで定義されていました。 wParamのHIWORDの値はWHEEL_DELTA(120)を分割したもの、あるいはその倍数になるということでしょう。
お礼
ありがとうございます
- mcWalker
- ベストアンサー率69% (27/39)
#define WM_MOUSEWHEEL 0x020A が必要ということでは? VC++ 6.0 にもなくて探して、自前で定義した覚えがある。 説明は、MSDN に(英語で)あった。
お礼
ありがとうございます BorlandC++5.5ではそのままでは使えないのでしょうか?
- sha-girl
- ベストアンサー率52% (430/816)
補足
ありがとうございます wParam The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. において expressed in multiples or divisions of WHEEL_DELTA, which is 120. のところはどう言う意味なのでしょうか?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
1回まわしたときのメッセージが2回来るだけですけど。 なにが来るかは認識されてますか?
お礼
ありがとうございます WM_? の形で来るのでしょうか?
お礼
ありがとうございます 動きました