0

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

我可以用:

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

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

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

4

1 回答 1

0

除了使用此处概述的全局鼠标挂钩以及Visual.PointFromScreen之类的函数将全局屏幕坐标转换为应用程序本地坐标之外,我认为没有好的解决方案。

于 2010-10-12T19:08:11.197 回答