我的Windows程序中有一個自繪列表控件。我使用CListCtrl :: GetBkColor來獲取背景顏色,對於選定的項目我使用GetSysColor(COLOR_HIGHLIGHT)。這與Windows對非所有者繪製的列表控件使用的內容相匹配,除了控件沒有焦點的情況外 - 那麼背景將被替換爲灰色。在所有者繪製Windows列表控件背景中使用什麼顏色?
Windows是否爲所選但未聚焦的背景使用GetSysColor常量之一?如果是這樣,哪一個?
我的Windows程序中有一個自繪列表控件。我使用CListCtrl :: GetBkColor來獲取背景顏色,對於選定的項目我使用GetSysColor(COLOR_HIGHLIGHT)。這與Windows對非所有者繪製的列表控件使用的內容相匹配,除了控件沒有焦點的情況外 - 那麼背景將被替換爲灰色。在所有者繪製Windows列表控件背景中使用什麼顏色?
Windows是否爲所選但未聚焦的背景使用GetSysColor常量之一?如果是這樣,哪一個?
COLOR_INACTIVECAPTION
(3),我想。
更新:不,看起來它只是COLOR_BTNFACE
(15)。
啊,好的。帶着幾分擺弄的,我已經決定了它使用SystemColors.Control
顏色在.NET中,這是C++的COLOR_3DFACE
COLOR_BTNFACE
,COLOR_MENU
等效,並COLOR_MENUBAR
也都代表了一個默認的相同顏色的Windows安裝。
一個'ListView'的行爲就像這樣,'View'設置爲'Details'並且'HideSelection'設置爲'false'。 – MusiGenesis 2010-04-12 23:45:02
@MusiGenesis,感謝您填寫細節 - 您完全正確。 – 2010-04-13 00:11:17
COLOR_3DFACE和COLOR_BTNFACE完全相同(它們都映射到值15)。其他人,儘管他們最初可能是相同的顏色,他們是單獨的值,可以獨立地改變。因此我提出這個問題的原因。 – 2010-04-13 15:41:58
而文字應該是COLOR_BTNTEXT。非常感謝! – 2010-04-13 16:21:00