1

このアプリケーションには、ドキュメント ウィンドウの上に浮かぶツール ウィンドウがあります。ツール ウィンドウに次のスタイルを使用します。

args.style = WS_POPUPWINDOW | WS_CAPTION;
args.exstyle = WS_EX_TOPMOST | WS_EX_TOOLWINDOW;

問題は次のとおりです。基本的に、ツール ウィンドウでマウス ホイール イベントを無視し、その下にあるウィンドウに渡すようにしたいのです。そのため、ユーザーは、マウス ポインターがツール ウィンドウ上にある間、ドキュメント (または別のウィンドウのコンテンツ) をスクロールできる必要があります。

これを達成する簡単な方法はありますか、それとも難しい方法で実装する必要がありますか? (WS_EX_TOPMOST が設定されていないマウスの下のウィンドウを見つけ、偽の WM_MOUSEWHEEL イベントを送信します。)

これは C++ プロジェクトですが、C# でもかなり似ていると思います。

編集: 明確にするために、Windows は、カーソルの位置を無視して、キーボード フォーカスを持つウィンドウに WM_MOUSEWHEEL を送信します。これを変更して、イベントをカーソルの下のウィンドウに再ルーティングしたいと思います。これは、ツール ウィンドウを導入するまでうまく機能していた WindowFromPoint と PostMessage の助けを借りて実装しました。私は基本的に関数 WindowFromPointButIgnoreTopMostWindows が必要です...

4

0 に答える 0