我在通知區域中使用WinAPI製作了彈出窗口,我的目標是使其與彈出窗口類似,當您單擊通知區域中的某些圖標時出現的彈出窗口,如音量圖標。通知區域彈出鏈接區域
我已經成功地使它看起來和行爲類似於其他的,但有一件事我似乎無法弄清楚。在彈出窗口的鏈接區有較深的青色背景並且在Windows 7和Windows 8之間的外觀細微的差別的它在Windows 7中的圖片可以在這裏看到
http://msdn.microsoft.com/en-us/library/windows/desktop/aa511448.aspx#flyouts
我實現這通過使用WM_PAINT
消息以正確的顏色(包括該部分最上面的部分的漸變)手動繪製我的彈出窗口的鏈接區域,但我覺得這太過分了,特別是因爲它不受改變Windows中的主題。例如,如果我設置「Windows Classic」主題,則此區域應該是灰色而不是藍色。
所以,我的問題是,我沒有手動繪製窗口可以實現這個功能。我注意到Win 7的資源管理器窗口中的細節窗格具有相同的外觀。我已經搜索了很多答案,但我還沒有找到任何答案。這是我第一次使用WinAPI做GUI,所以我沒有什麼經驗,因此我假設有一些我不知道的東西。
UPDATE:
我還是設法弄清楚如何無需手動畫吧得出這樣的區域。它可以通過使用OpenThemeData
和DrawThemeBackground
功能
HTHEME aeroTheme = OpenThemeData(HWND,L 「彈出」);
DrawThemeBackground(aeroTheme,hdc,FLYOUT_LINKAREA,0,& rect,& rect);
這顯然只適用於啓用主題的情況,所以對於非主題的情況,我使用適當的顏色繪製正常的矩形。
謝謝,我會研究它。 – AFA 2013-04-30 11:09:21