2010-10-12 94 views
0

我有一个WPF应用程序,它具有多个WindowsFormsHost控件。我试图在全屏模式下最大化时跟踪应用程序内部的鼠标位置。如果用户将鼠标放在顶部屏幕附近,我想用额外的菜单显示一个窗口。在多个WindowsFormsHost控件中跟踪WPF鼠标移动

我可以使用:

  • Window.PreviewMouseMove
  • InputManager.PreProcessInput,甚至
  • HwndSource.FromHwnd(WindowInteropHelper(主窗口).Handle).AddHook(...)

接收移动事件,只要鼠标不移过WindowsFormsHost(如果用户这样做,我不会收到事件)。我认为根本问题是因为WPF为每个WindowsFormsHost使用单独的HWND。

是否有一种很好的方式来跟踪我的应用程序中的鼠标移动,而无需手动查找每个WindowsFormsHost并订阅其鼠标移动事件?如果可能,我还想避免使用全局Windows鼠标侦听器。

回答

0

我不认为除了使用全局鼠标钩(如here)以及像Visual.PointFromScreen这样的函数将全局屏幕坐标转换为应用程序本地坐标之外,还有一个好的解决方案。