2012-06-16 96 views
0

如果不調整表單的可見性,表單的整個邊界是否可能最透明?整個表單的hittest透明度

我正在使用user32 API調用WindowFromPoint以便找到鼠標下的控件。在某些情況下,我想忽略在主窗體(或另一個子窗體)前浮動的子窗體的存在,但保留此窗體以忽略可見。

將窗體的不透明度設置爲0將成功導致命中測試直接通過它,但形式顯然是不可見的,我寧願它保持可見狀態。

由於這個子窗體可以有任意數量的控件,有沒有辦法讓這個窗體攔截所有WM_NCHITTEST消息到窗體上的子控件,這樣我就可以爲每個控件返回hittest透明度?包含在表單中的控件是任意的,所以我無法在內部修改它們。

+0

你有沒有嘗試覆蓋WndProc方法的形式,你想捕獲的消息?如果這不起作用,那麼你可以使用MessageFilter,更多信息:http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/7bd3e24f-c21c-4490-910d-b47b6becf70d –

+0

什麼是實際您想申請過濾的規則?請參閱:http://msdn.microsoft.com/en-us/library/ms158404.aspx –

+0

@Emo我從另一個窗體中測試一個窗體,而不是窗體的子控件,因此win32 API調用。 – roken

回答

1

您正在尋找WS_EX_TRANSPARENT Windows樣式。

This answer給出了一個足夠好的解釋。

+0

賓果!與WS_EX_LAYERED一致的WS_EX_TRANSPARENT可以做到這一點。 – roken