我有一个WPF应用程序,它有几个WindowsFormsHost控件。当鼠标在全屏模式下最大化时,我试图跟踪应用程序内部的鼠标位置。如果用户将鼠标放在靠近顶部屏幕的地方,我想显示一个带有附加菜单的窗口。
我可以使用:
要接收移动事件,只要鼠标不在WindowsFormsHost上移动(如果用户这样做,我就不会接收事件)。我认为根本问题在于,WPF对每个WindowsFormsHost使用单独的HWND。
是否有一个好方法可以在应用程序中跟踪鼠标移动,而无需手动查找每个WindowsFormsHost并订阅其鼠标移动事件?如果可能的话,我还想避免使用全局Windows鼠标侦听器。
我不认为有什么好的解决方案,除了使用一个全球鼠标挂钩,如前所述。 here 以及类似的功能 Visual.PointFromScreen 将全局屏幕坐标转换为应用程序局部坐标。