WebBrowser
サードパーティの Web アプリケーションへのアクセスを "ダミープルーフ" (つまり、コンテキスト メニュー、戻るボタン、フリー ナビゲーションなどを無効にする)する埋め込みコントロールを使用して、C# で Windows フォーム アプリケーションを開発しています。
現在、ズーム機能をカスタム ブラウザに追加しようとしています。キーボードの組み合わせが機能しています (CTRL + および CTRL - 基礎となる ActiveX WebBrowser オブジェクトへの正しい OLE 呼び出しを行います) が、WebBrowser
対処しなければならなかったその他の苛立たしいことの中で、理解できないようですIE のようにズーム機能をシミュレートするために CTRL-マウス ホイールをキャプチャする方法。私はこれに対する解決策を見つけるためにいたるところを見ましたが、役に立ちませんでした。
それを理解するために、WebBrowser コントロールだけを含む空のフォームを作成したところ、次のことがわかりました。
- CTRL-MouseWheel は、親フォームにフォーカスがあり、マウス カーソルがウィンドウの上部 (アプリケーションのタイトルなど) にあるとき、またはコントロールが表示されていないとき
MouseWheel
にマウス カーソルがコントロールの上にあるときに、常にイベントを発生させます。WebBrowser
親フォームにフォーカスがあっても、フォーカスを取得できません。 - CTRL-MouseWheel は
MouseWheel
、マウス カーソルがWebBrowser
コントロール上WebBrowser
にあり、フォーカスがあるときにイベントを発生させず、効果がないように見えます。 - CTRL を使用せずにマウス ホイールを使用すると、ウィンドウの内容がスクロールされますが、垂直スクロール バーが上部または下部に完全に達するまでイベント
WebBrowser
は発生しません。MouseWheel
- から継承されたサンプル クラスと親フォームの両方のオーバーライドによる for のインターセプトは、上記の条件にのみ適用されます (適切に
Message
を示します)。WM_MOUSEWHEEL
WndProc
DefWndProc
WebBrowser
wParam
MK_CONTROL
PreviewKeyDown
予想どおり、CTRL が押されるとイベントが発生しますが、マウス ホイールとは連携して何もしません。
したがってMessage
、親フォームとマネージド コントロール レベルの下で処理されており、傍受したり処理したりできる場所までバブルアップしないと思います。これを行う方法、または CTRL-MouseWheel を使用してズームインおよびズームアウトをシミュレートする他の方法はありますか?
読んでくれてありがとう!