2013-04-29 193 views
4

我在通知區域中使用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:

我還是設法弄清楚如何無需手動畫吧得出這樣的區域。它可以通過使用OpenThemeDataDrawThemeBackground功能

繪製

HTHEME aeroTheme = OpenThemeData(HWND,L 「彈出」);
DrawThemeBackground(aeroTheme,hdc,FLYOUT_LINKAREA,0,& rect,& rect);

這顯然只適用於啓用主題的情況,所以對於非主題的情況,我使用適當的顏色繪製正常的矩形。

回答

0

我不是WinAPI方面的專家,所以我無法提供任何關於在沒有手動繪畫的情況下實現想要的外觀的建議。

但是,如果您成功實現特定顏色主題的外觀,建議您查看GetSysColor function,並在創建用於繪畫的畫筆時使用此選項。這應該允許您根據已設置的主題獲取正確的顏色。更多信息(包括色板表)可以在here找到。

希望這會有所幫助。

+0

謝謝,我會研究它。 – AFA 2013-04-30 11:09:21