代码之家  ›  专栏  ›  技术社区  ›  Jeff Moser

在多个WindowsFormsHost控件中跟踪WPF鼠标移动

  •  0
  • Jeff Moser  · 技术社区  · 14 年前

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

    我可以使用:

    • window.previewmousemove窗口
    • inputmanager.preprocessinput,甚至
    • hwndsource.fromhwnd(windowinterophelper(mainwindow.handle).addhook(…)

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Jeff Moser    14 年前

    我不认为有什么好的解决方案,除了使用一个全球鼠标挂钩,如前所述。 here 以及类似的功能 Visual.PointFromScreen 将全局屏幕坐标转换为应用程序局部坐标。