マウスホイールでの移動行数. – プログラミング – Home

マウスホイールでの移動行数.
 
通知
すべてクリア

マウスホイールでの移動行数.


シルク法度
 シルク法度
(@シルク法度)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

エディタで,マウスホイールを一回動かした時の移動行数を知りたいの
ですが...
色々なエディタで試したのですが,大体3行が多く,
たまに1行や,2行があります.
正確な値をしるにはどうすればいいのでしょうか?
OnMouseWheel() のヘルプにある,WHEEL_DELTA は,
移動する回転距離をしめしているとありますが,
120という値はピクセル値を示しているとはおもえません.
(行高さが120の倍数のピクセル値とは限らないので).
一回のマウススクロールでの移動量をピクセル値で得る方法,もしくは
行数で取得する方法はあるでしょうか?

よろしくお願いします.


引用解決済
トピックタグ
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

各アプリケーション依存だと思いますが・・・

でWM_MOUSEWHIEELの120は、マイクロソフト製のアレの引っかかりっていうか、
手ごたえがあるやつの一回分が120だと思います。

マウスのドライバが勝手にスクロールバーとかエミュレートしてるような気もしますけど、
どうなんでしょ。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

プログラム側でWM_MOUSEWHIEELを捕まえる場合、
WHEEL_DELTAは、PAIさんが書いておられるようにワンノッチ分だと思えば良いと思います。
すばやくまわした場合は、WHEEL_DELTA以上の値がくることがあるのでWHEEL_DELTAで割る
ことで何ノッチ分を一気に動かしたのかわかるようになっていたと思います。
従ってピクセルとか行数とかとは全く関係ありません。
どれだけ回転したのかを示す独立した単位だと考えるべきです。

ワンノッチをエディタ上の何行に対応させるのはアプリケーション依存であって
公式な定義はないと思います。ワンノッチ一行だとすばやくスクロールしたい時に
たくさん動かさないといけないので面倒と言うだけのことです。
この辺は、作成時の決め事とかユーザーからの指摘とかいろんな要素から
決まるような気がします。


返信引用
シルク法度
 シルク法度
(@シルク法度)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

一回ホイールをまわす(ワンノッチ分?)時の行数は,以下の
関数で取得できるという情報を得ました.

UINT nSysLines;
SystemParametersInfo( SPI_GETWHEELSCROLLLINES, 0, &nSysLines,0);

ただ,OSの設定とかで
これの値をユーザーが独自に決めることはできるのでしょうか?

テストをする際,この値が変った場合のテストをおこないたいのですが...


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

>SystemParametersInfo( SPI_GETWHEELSCROLLLINES, 0, &nSysLines,0);
>これの値をユーザーが独自に決めることはできるのでしょうか?

SystemParametersInfo()に「SPI_SETWHEELSCROLLLINES」を与えれば、お好きな値に設定
できるでしょう。第4引数に与える値次第でプロファイルを書き換えるかどうか、なども
指定できます。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

当方Win2000 IntelliMouse Explorer3.0 ですが、

マウスのプロパティ→ホイール→詳細設定

で、スクロールする行数を変えることができました。

更に、PSIでメッセージを簡単に調べた感じだと、
WM_MOUSEWHEELのzDeltaは相変わらず120のままで、
ホイールに対応していないアプリケーションでは設定した回数分だけ
WM_VSCROLL が SB_LINEUP か SB_LINEDOWN で繰り返されるみたいです。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

s/PSI/SPY

PSIってなんじゃい、Ψかい。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました