メイン ウィンドウが DLL に実装されている MFC アプリケーションを開発しました。これを改良するために、これを WPF アプリケーションに変更して、「古い」ネイティブ ウィンドウが Wpf ウィンドウで再ホストされるようにすることを考えています。ここまでは順調ですね。
ただし、古い MFC アプリケーションは、アプリケーション レベルでいくつかのメッセージをトラップしました (例: マウス クリックやキーボード入力の防止)。WPF アプリケーション内で MFC ウィンドウを再ホストするには、WPF アプリケーションからこれらをキャッチし、古い MFC ウィンドウにそれらを事前に翻訳するように依頼する方法が必要です...
これはまったく可能ですか?
HwndHost で MFC ウィンドウを再ホストしてから、メッセージ フックを追加することを考えていました。ブリッジング CLR-DLL のコードは次のようになります (目的の結果が得られません)。
MyHwndHost ^handle = gcnew MyHwndHost(pContentWnd);
handle->MessageHook += gcnew HwndSourceHook(&CVSimCoreNat::ControlMsgFilter);
誰でも助けることができますか?