2010-10-12 85 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這樣的函數將全局屏幕座標轉換爲應用程序本地座標之外,還有一個好的解決方案。