DOBON.NET どぼん!のVB道掲示板(プログラム)過去ログ

ホイールマウスとスクロールバー

はじめて投稿します。
こんにちは、muraといいます。

ホイールマウスのホイールを使用してVScrollBarコントロールの操作はできますか?
試してみたらできません。コンボボックスやリストボックスのスクロール操作はできるんですが。ご教授願います。

環境
WindowsNT 4.0 Workstation SP4
VB6.0

同じ内容で別のサイトにも投稿しています。なかなか返答がないため内容を載せました。どこかでみかけたらごめんなさい。
よろしくお願いします。
>はじめて投稿します。
>こんにちは、muraといいます。
>
>ホイールマウスのホイールを使用してVScrollBarコントロールの操作はできますか?
>試してみたらできません。コンボボックスやリストボックスのスクロール操作はできるんですが。ご教授願います。
>
>環境
> WindowsNT 4.0 Workstation SP4
> VB6.0
>
>同じ内容で別のサイトにも投稿しています。なかなか返答がないため内容を載せました。どこかでみかけたらごめんなさい。
>よろしくお願いします。

ホイールですが、VC++じゃあ全然簡単だったなあと思って、以前作ったものを見返してみたら、MFCライブラリにある CScrollViewを使うと、全然何もしなくても勝手にスクロールしてくれていたからでした。じゃんじゃん、、、なんて落ちですが、要するに、WM_MOUSEWHEELメッセージを拾って処理できればいいのです。

しかしながら、.NETのことは知りませんが、VB6.0では難しいでしょう。99.9%不可能でしょう。なぜなら、VB6.0ではこれに対応したイベントプロシージャが用意されていないし、新たなイベントプロシージャを追加する方法もない。
あるとすれば、VBであることを捨てて、Cと同様に自分でメッセージループを作って、メッセージをハンドリングするしかない。でも、そこまでするのならCの方がずっと簡単でしょう。

でも、VBのコンボボックス、リストボックスの他に、複数行テキストボックス、リッチテキストボックスなどは、ホイールが効きませんでしたか? こういうホイールが使えるコントロールで代用処理は出来ないのですか?
回答ありがとうございました。

>こういうホイールが使えるコントロールで代用処理は出来ないのですか?
代用処理はできると思いますが、時間があまりないのでマウスのスクロールで操作することはあきらめます。
いろいろ勉強になりました(VC++なら簡単など)。ありがとうございました。
>しかしながら、.NETのことは知りませんが、VB6.0では難しいでしょう。99.9%不可能でしょう。なぜなら、VB6.0ではこれに対応したイベントプロシージャが用意されていないし、新たなイベントプロシージャを追加する方法もない。

VB6 でやる方法、あります。ソースがすぐには見つからなかったのであれですが、私もホームページで検索して見つけました。フォームのメッセージをフックして処理します。また、Microsoft以外のホイールについては、通常スクロールバーにフォーカスがあたっている時のみ、反応してくれますが、ActiveXコントロールの画面の端に設置してやると、なぜか、コントロールないでのスクロールに反応してくれるようになります。

VB.net では標準で Microsoft のホイールの回転イベントが拾えます。

DOBON.NET | プログラミング道 | プログラミング掲示板