我有一个使用在本机 win32 中编程的 Direct2D 的子窗口(或控件,如果你愿意的话)。我将该窗口嵌入到 WPF ui 中。一切都很好,使用 MSDN Hosting a Win32 Control in WPF - 当然还有一些调整。
我的 WPF 应用程序有一个上下文菜单,它应该出现在应用程序的任何地方,但当然它在 win32 子窗口上不起作用,因为消息被发送到它的 WndProc 并且不被 WPF 处理。
我尝试覆盖HwndHost::WndProc并成功捕获右键单击,但无法打开“Window.ContextMenu”,因为此时我无法访问 MainWindow 对象。
我什至尝试过一些疯狂的事情,比如通过导入 win32 方法来生成新的 windows 消息,并尝试“欺骗”WPF 以在 win32 子窗口上给我一个上下文菜单:
if (msg == WM_RBUTTONUP)
{
IntPtr parent = GetParent(hwndHandle);
PostMessage(parent, (int)0x0205, (IntPtr)0x0002, lParam);
handled = true;
}
任何朝着正确方向的推动将不胜感激!!
谢谢。