我試圖讓一個應用程序的媒體播放器的玻璃效果,但我周圍的所有路障面對。是我,還是API?Windows Vista/7玻璃完全破碎?
我開始撥打:
MARGINS margins = { -1, -1, -1, -1 };
HRESULT result = ::DwmExtendFrameIntoClientArea(m_hWnd, &margins);
和擦除背景黑色:
OnEraseBkgnd
一切都很好,直到我添加了一個編輯框。使用EditBox,出現黑色文字的地方被玻璃取代。這個問題與ComboBoxEx等更高級的控件不同。那些開始看起來像一團糟。
明亮側這種方法是,alpha混合圖像看起來正常的。並逐漸融入玻璃。
該溶液爲編輯框好像是用與WS_EX_LAYERED和LWA_COLORKEY使用一些可怕彩色玻璃掩蔽,和擦除的背景彩色。不幸的是這打破了其他的事情圖標上的阿爾法混合看起來超級醜陋,陰影與放射性綠色混合,並且玻璃本身變成可點擊的,即使窗口上沒有WS_EX_TRANSPARENT樣式。
第三個建議是用GDI +自定義組合,但這似乎是一個不好的方法,因爲GDI +是一個軟件後備,我找不到如何將EditBox或ComboBoxEx渲染爲圖像的方式稍後可以用於構圖。
我錯過了什麼嗎?
在於是也就來源似乎面臨着同樣的問題: link1 link2
您鏈接的兩個問題似乎與您在此詢問的內容幾乎完全相同。你的問題是什麼:任何人有任何其他想法? – 2010-12-06 15:00:27
這些問題描述了RGB(0,0,0)行爲的一部分,這似乎被破壞了。我還嘗試了通過WinAPI機制進行掩蔽,這些機制仍然不起作用,並導致完全不同但同樣錯誤的結果。所以我仍然想知道是否有人找到了解決方案。 – Coder 2010-12-06 15:07:26
GDI是24bpp是核心問題,玻璃效果需要設置alpha。獅子座的鏈接看起來不錯。 – 2010-12-06 16:00:04