0

在我的 wpf 项目中,我托管了一个带有列表框控件的 win 32 窗口。在这种情况下,是否可以在 Message Hook 事件处理程序中获取 Win 32 窗口?

var view = new Win32Host(source.Handle, mViewMgr);
view.MessageHook += View_MessageHook;
IntPtr View_MessageHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    handled = false;
}

有人请给我你的建议吗?

4

1 回答 1

0

我不确定Win32Host是什么,但如果你有一个HWND,你也许可以得到一些相关的对象。这真的取决于班级。因此,例如,如果 HWND 用于 Windows 窗体控件,那么您可以使用System.Windows.Forms.Control.FromHandleFromChildHandle方法。如果 HWND 是承载 WPF 内容的窗口,那么您将使用HwndSource.FromHwnd并从中获取RootVisual以获取根元素(例如 WPF 窗口或弹出窗口的根元素)。

于 2013-06-12T13:00:42.557 回答