2016年4月30日土曜日

マウスホイールの操作がアクティブなウィンドウに働く仕様だった理由

先日、なぜマウスホイールの操作はアクティブなウィンドウに送られる仕様だったんだろうということを書きましたが、ちょうど The Old New Thing にその理由が書かれていました。

Why are mouse wheel messages delivered to the focus window instead of the window under the mouse?

一言で言えば、「ホイールは Ctrl キーなどと一緒に使われることがあるから」だそうです。

ホイール操作は当初ズーム機能を想定して開発されていたものが、スクロールに使った方が便利だろ、ということで通常はスクロール、Ctrl キーを押しながらだとズームという感じで使われるようになりました。
そのようにキーと一緒に使う場合、ホイール操作をフォーカスのあるウィンドウに送らないと不都合があったようです。

キーボードの入力は、キューイングされてフォーカスのあるウィンドウに送られます。
元々ホイールが開発された時、その機能は OS ではなくヘルパープログラムによって実現されていました。
このヘルパープログラムからキー入力のキューにアクセスする方法がなかったために、キー入力との整合性が取れるようにフォーカスのあるウィンドウにホイール操作が送られる仕様になったようです。

後にホイールを扱う機能が OS に取り込まれこの問題は解決できるようになりましたが、今までの挙動を変えないようにということで、そのままになっていました。
それが Windows 10 になってようやく変更されたというわけですね。

0 件のコメント:

コメントを投稿