<.net forms>OnMouseWheelイベントのe.Deltaはなぜ120なのか。(MouseWheelScrollDelta、WHEEL_DELTA )
OnMouseWheelのe.Deltaはなぜ120なのか。 と思い調べたら、「なぜか?」に対する答えを見つけた。
なぜかは↓に書いてました。
マウスのホイールを「カチッと」
一般的なマウスだとスクロールを1回「カチッと」動かすと、OnMouseWheelというイベントが動いて、120という数字か、-120という数字が渡される。
スクロールを勢いよく動かすと、240とか480とかが渡されます。
その120という数字を基準に、プログラムは組まれてます。
120より小さい数字を渡すことができる
マウスのハードウェア側で、1回の「カチッと」で60を送るようにした場合、2回「カチッと」動かすと1回分動くことになる。
3回「カチッと」動かして1回分動かそうとするのであれば、120/3で40を渡せばよいことになる。
こんな感じでハードウェア側で対応しようとすると渡す値は下記表になる。
カチッと回数 | 120に変わる値 | 備考 |
---|---|---|
1 | 120 | |
2 | 60 | |
3 | 40 | |
4 | 30 | |
5 | 24 | |
6 | 20 | |
7 | 17.142・・・ | NG |
8 | 15 | |
9 | 13.333・・・ | NG |
10 | 12 | |
11 | 10.909・・・ | NG |
12 | 10 | |
24 | 5 | 時間に使えそう |
ハードウェア側が繊細になれば、「カチッと」で動く量を少なくすることが出来るということらしい。
120ではなく、10だったら。
10/3は3.33333・・・となるので、3回で1回分の「カチッと」が実現できない。
ちょうどよい値が120だったということ。
定数
.net の場合は、WHEEL_DELTA か MouseWheelScrollDeltaを使いましょう。
↓WHEEL_DELTA ↓
↓MouseWheelScrollDelta↓