私の VC++ アプリケーションには、組み込みブラウザー (MSHTML) があります。正常に動作し、マウスを適切に処理します (たとえば、クリックと選択は正常に処理されます)。ただし、組み込みブラウザ上でマウス ホイールを回転させても効果はありません。これは私の問題です。
私は、MSHTML 埋め込みの内部構造や OLE 全般についてあまり詳しくありません。これは wxWidgets アプリケーション (wxWidgets は C++ GUI ライブラリ) であり、その IEHTMLWin コンポーネント (MSHTML コントロールをホストし、wxWindow インターフェイスでラップする) を利用しています。しかし、私はソースを持っているので、喜んでデバッグを行います。
wxWidgets を忘れて、純粋に OLE と MSHTML について話しているとしたら、問題の原因を探すのに適切な場所はどこでしょうか? 「mshtml マウス イベント」または「mshtml ホイール」の亜種を簡単にグーグル検索してみましたが、適切なポインタは得られませんでした。
IEHTMLWin のコードを確認したい場合は、ここで参照できます。iehtmlwin.c ファイル (1.5 k 行) には、OLE 関連のコードがすべて含まれており、Web ブラウザー コントロールをホストするために必要なすべてのインターフェイスが実装されています。マウス イベントが含まれている wxWindow にまったく進まないことに注意してください (OnMouse は呼び出されません)。
{UPD} mshtml バージョン: 6.00.2900.3314。このコントロールをホストする他のアプリケーション (IE を含む) は、ホイールをサポートします。{/UPD}
jdigital ヒント (winspector に関して) は非常に役に立ちました。メッセージのスニッフィングを行った後、問題がフォーカスに関連していることに気付きました。ブラウザー コントロールをクリックしても、何らかの理由でブラウザー コントロールにフォーカスが設定されず (RichEdit などとは異なります)、WM_MOUSEWHEEL がそこに送信されません。したがって、新しい問題は焦点を設定することです。