MFC ダイアログ上のリストボックスの項目の選択を、マウスホイールで変えたい。

OnMouseWheelでは、リストボックス上でホイール操作したものが入ってこない

CListBox をサブクラス化してメッセージを処理すれば良いのではないかと思うのですが,
リストボックスでない場所でもホイール操作でリストボックスの選択を変えたいという話だと,それだけでは不足なので,プラスアルファが必要そうです.

既にAPPクラスがこのメッセージを PreTranslateMessage で捕獲してしまい SendMessage で投げているので,ダイアログ側ではこのメッセージは PreTranslateMessage に来ないハズです.
とすると,ダイアログでは直接的に WM_MOUSEWHEEL をハンドルすれば良いように思うのですが…


…っていうのをちょっと(ダイアログベースプロジェクトを作って)やってみたところ,
リストボックス上でマウスホイールを動かすと,リストボックスとダイアログの両方の処理が走るという謎の挙動になってしまいました.ワケワカンネー.
→ そしたら今度は何かしら多重処理を抑制するための工夫が必要になるのかもしれません……

あと,ダイアログ上の他のコントロール上でホイール操作した場合はどうするのか? とか考えると,そこはうまい方法は思いつかない感じです.

コメントを投稿

0 コメント