webbrowserコントロールを使ってブラウザを作っているのですが、マウスホイールでスクロールをするには一度webbrowser上でクリックをしないと使えないのですが、クリックしなくてもスクロールするにはどうすればいいでしょうか?
また、googleなど検索するときに日本語からローマ字にするときf10キーを使うのですが、それだとメニューバーのファイルも選択されてしまいます。入力が確定していない間f10キーはローマ字に変換するキーとするにはどうしたらいいでしょうか?
XPHome+VB6.0で作成しています。
関係ないと思いますが、メニューバーにはファイル タブ 表示 お気に入り ツール ヘルプがあります。
よろしくお願いします。
※これは推測です
・自分のFormにフォーカスが当たっていなくても、スクロールしたい。
この解決案は、
「(マウスホイールによって生成された)スクロールメッセージをフォーカスのあたっていない、
マウス下のウィンドウに送る」
という感じになると思います。
これはシステム全体にかかわる動作変更ですので、非常にややこしいかもしれません。
・自分のFormにフォーカスが当たっていれば、スクロールできるようにしたい。
この解決案は、
「他のコントロールにフォーカスが当たった場合、
WebBrowserコントロールにフォーカスを当てる」
になるかと。
誤爆かな…
> マウスホイールでスクロールをするには
> 一度webbrowser上でクリックをしないと使えないのですが、
そのあたりは、マウスドライバやツール等の設定にもよるんじゃないかと。
たとえば、アクティブウィンドウに対して影響する物もあれば、
ポインタ位置のウィンドウに対して影響する物もあったりして、
さらに後者の場合、ポインタ位置のウィンドウがフォーカスを
持っているかどうかで、スクロール可能かどうかが変わる物も
あったりするわけで、どのタイプかによって対応も変わるかも?
しかもWebBrowserの場合、文書自体のスクロールなのか、文書内の
個々の要素に対するスクロールなのかが曖昧な場合もあるので、
下手にプログラムで制御しようとせず、スクロールしなければ
クリックするという運用レベルで回避した方が、問題は
少ないんじゃないかな。(後ろ向きな回答ですが)
もしかした、マウスメッセージを横取りすれば対応できるのかも
知れませんけど(できないかも知れないけど)、ドライバによって
WM_MOUSEWHEEL メッセージを投げるものと、WM_SCROLL を投げる物が
あるなど、若干の違いがあったりするので、実装後のテストの手間は
それなりに掛かるかも…。(複数の環境でテストする必要があるので)
> 日本語からローマ字にするときf10キーを使うのですが
> それだとメニューバーのファイルも選択されてしまいます。
WebBrowser に yahoo! を表示させて、入力ボックスでの漢字入力中に
F10 を押したのですが、メニューがアクティブになったりはしません
でしたが(MS-IME 2003)…環境の違い??
F10 が駄目なのであれば、F8やF9でを使うとか、IMEの設定を変えるとか、
メニューを使わないなどの運用で回避できませんかね。
通常のTextBoxとかなら、KeyDown / KeyPress 等を使った制御ができるの
でしょうけど、WebBrowser の場合、それに相当する処理を組み込むのは、
結構面倒なので…。
お返事ありがとうございます。
f10キーに関してはMS-IMEではなくATOKを使っていたのでだめだったようです。
マウスホイールは初心者の自分からするとかなり難しそうなので後から考えようと思います。お気に入りなどやることがほかにもあるので。。。
またお世話になることもあると思うのでそのときはよろしくお願いします。
ありがとうございました。
一応解決とさせていただきます。
今後参考になれば。。。
MS-IME2002Standard2002ver8.1とMS-NaturalInput2002ver8.1は質問で書いたような状態になりました。
ツイート | ![]() |