ネイティブの win32 でプログラムされた Direct2D を利用する子ウィンドウ (またはコントロール) があります。そのウィンドウを WPF ui に埋め込んでいます。WPFでWin32コントロールをホストするMSDNを使用して、すべてがうまく いきます-もちろん、いくつかの調整があります。
私の WPF アプリには、アプリのどこにでも表示されるコンテキスト メニューがありますが、もちろん、メッセージが WndProc に送信され、WPF によって処理されないため、win32 子ウィンドウでは機能しません。
HwndHost::WndProcをオーバーライドしようとしましたが、右クリックを正常にトラップできましたが、この時点で MainWindow オブジェクトにアクセスできないため、「Window.ContextMenu」を開くことができません。
win32メソッドをインポートして新しいウィンドウメッセージを生成し、WPFを「だまして」win32子ウィンドウにコンテキストメニューを表示させるなど、クレイジーなことも試しました。
if (msg == WM_RBUTTONUP)
{
IntPtr parent = GetParent(hwndHandle);
PostMessage(parent, (int)0x0205, (IntPtr)0x0002, lParam);
handled = true;
}
正しい方向へのプッシュは大歓迎です!!
ありがとう。