2009-12-11 74 views
2

我們把我們的透明窗口的應用程序,在另一個進程的窗口。我們的窗口包含一些子控件。我們創建一個WS_EX_LAYERED窗口,使用colorkey來選擇透明度。主窗口是完全透明的,所以它只能作爲子控件的容器。WS_EX_LAYERED色鍵 - Vista的問題

這部作品XP和Vista不細航空。但是,Vista與Aero點擊不通過透明區域。我們可以做什麼?

使用WS_EX_TRANSPARENT失敗,它使我們自己的控件無法正常使用,當然。

我已經考慮隱藏父窗口(WS_SHOWWINDOW),但我相當肯定這會隱藏所有的孩子,並且AFAIK將窗口調整爲最小尺寸,使用CLIPCHILDREN CLIPSIBLINGS的任意組合都會以類似的方式失敗...

感謝您的幫助。

回答

1

另一種方法是使用一個窗口區域,而不是WS_EX_LAYERED

+0

謝謝,我知道的區域,但我認爲它可能成爲相當乏味超過30個多種文字和按鈕元素打造的區域。但是,也許值得重新考慮。 – Adam 2009-12-11 15:08:55

+1

那麼,他們都是兒童控制,很容易讓他們的RECT – Anders 2009-12-11 18:21:58

+0

乏味?這就是爲什麼你是一個程序員 - 自動化乏味。從rects生成一個區域是微不足道的,從其他形狀更棘手。但是基於區域的窗口裁剪在Windows 6.0和6.1版本上比使用colorkey的WS_EX_LAYERED支持要好得多。 – 2009-12-11 19:07:22

0
  • WS_EX_LAYERED是什麼處理圖形窗口透明度,的點擊僅僅是一個副作用正巧工作在老版本的Windows操作系統。
  • WS_EX_TRANSPARENT是什麼使得鼠標透明。圖形透明度是不保證與此標誌。您必須手動繪製控件(使用GDI函數)(如在directX應用程序中)並使用低級別鉤子捕捉光標位置。