2011-01-10 64 views
2

我有一個(父)窗口,其中一個子窗口是由另一個庫(Ogre3d)創建的。窗口初始化使用純粹的Win32 API。在父窗口中捕獲WM_MOUSEMOVE事件

我想捕獲我的父窗口中的鼠標輸入,但它似乎是我的WM_MOUSEMOVE事件只能通過子窗口接收,這是有道理的,因爲那會填滿我所有的客戶區域。

是否有方法在父窗口中捕獲WM_MOUSEMOVE消息或(無干擾地)將這些消息從子窗口重定向?

+0

使用Spy ++可以驗證您的父窗口是否獲取鼠標消息?在這種情況下,它似乎永遠不會。 – 2011-01-11 01:24:19

回答

4

如果您可以獲得相關窗口的句柄,您可以subclass它。

簡而言之,您將註冊一個回調函數,該函數會在發送到子類窗口的所有消息中得到一個裂縫。

鏈接的文章應該讓你到你需要的地方。

+5

我建議攔截「WM_NCHITTEST」並使其始終返回「HTTRANSPARENT」。然後,父母將收到`WM_MOUSEMOVE`消息,你不需要翻譯座標。 – finnw 2011-01-11 04:01:57