2009-09-14 33 views
0

我想要一個對點擊透明的HWND(即將它們傳遞給下面的窗口)。Win32:如何使HWND透明點擊?

起初我試過WS_EX_TRANSPARENT,但是它有各種重繪問題。下面的Windows最終會畫出我的HWND。

我做了一些搜索,並找到了一個建議,通過返回HTTRANSPARENT來響應WM_NCHITTEST。這似乎工作,但MSDN聲明只有當下面的窗口在同一個線程中時它才能正常工作。搜索HTTTRANSPARENT出現了一些問題(http://www.virtualdub.org/blog/pivot/entry.php?id=147

那麼...任何其他想法?

+0

我從來沒有使用WM_NCHITTEST的問題。你的應用程序是否在不同的線程中創建窗 – 2009-09-14 11:43:07

+0

是的,這是專門設計用於處理被許多線程調用的Ui庫的一部分。 – 2009-09-14 12:21:27

回答

1

捕獲所有鼠標消息並使用PostMessage將它們轉發到底層窗口。

+0

聽起來不錯,除了...你怎麼找到下面的窗戶?這適用於所有流程? – 2009-09-14 12:22:37

+0

您必須使用GetWindow枚舉所有頂級窗口(http://msdn.microsoft.com/en-us/library/ms633515(VS.85).aspx)並檢查它們的位置。當你找到一個,你會使用ChildWindowFromPoint(http://msdn.microsoft.com/en-us/library/ms633558(VS.85).aspx)。 – 2009-09-14 13:36:00