• ベストアンサー

無償BorlandC++5.5でAPI(SDK)を使って

BuilderやMFCを使わずにGUIアプリを作っていますが 2ボタンマウス用のプログラムを 3ボタンホイールマウスのホイール回しに対応したいのですが ホイールを2方向それぞれ回したときに 発生する「メッセージ」を教えてください そのメッセージを受けてスクロールメッセージに書いてあるコマンド群を実行するようにしたいのです

質問者が選んだベストアンサー

  • ベストアンサー
  • mcWalker
  • ベストアンサー率69% (27/39)
回答No.4

使えるでしょう。 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行は好み。環境設定で選べるようにしても良いでしょう)

keyguy
質問者

お礼

ありがとうございます 動きました

その他の回答 (4)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.5

>において >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)を分割したもの、あるいはその倍数になるということでしょう。

keyguy
質問者

お礼

ありがとうございます

  • mcWalker
  • ベストアンサー率69% (27/39)
回答No.3

#define WM_MOUSEWHEEL 0x020A が必要ということでは? VC++ 6.0 にもなくて探して、自前で定義した覚えがある。 説明は、MSDN に(英語で)あった。

keyguy
質問者

お礼

ありがとうございます BorlandC++5.5ではそのままでは使えないのでしょうか?

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2
keyguy
質問者

補足

ありがとうございます 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)
回答No.1

1回まわしたときのメッセージが2回来るだけですけど。 なにが来るかは認識されてますか?

keyguy
質問者

お礼

ありがとうございます WM_? の形で来るのでしょうか?

関連するQ&A