2009-10-25 46 views
1

我有一個奇怪的問題(當然,至少我覺得奇怪=))。我正在編寫我自己的GUI庫,這是一個圍繞Windows API的包裝(是的,我知道WTL和框架如MFC =))。在當前階段,我用這種方式封裝了常用控件:例如,Edit類由一個簡單的窗口和一個位於其上的標準編輯窗口(MainWindow - > GhostWindow - > EditBox)組成。這就是我能夠例如修改編輯的背景顏色的編輯類本身裏面:使用WinXp常用控件編輯控件背景色的奇怪行爲

myedit->SetBkColor (RGB (0, 0, 0)); 

它工作得很好,直到我叫INITCOMMONCONTROLSEX並附清單文件到我的計劃。做完這些之後,我的編輯只有在專注時才能夠改變顏色。說實話,我沒有一個全面的想法,爲什麼這樣做,我做錯了什麼,所以我會感謝任何幫助。

謝謝#535。

回答

0

好吧,一切都比我想象的容易得多。我只是太無心=(當不使用樣式時,一個手杖使用:: SetBkColor(...)來改變背景顏色,並從WM_CTLCOLOR *返回一個筆刷來改變邊框顏色。現在:: SetBkColor(...)對應於焦點顏色和畫筆返回改變對我的背景顏色。羞恥=(

0
  1. 當您將版本6清單,調用INITCOMMONCONTROLSEX變得不必要。

  2. 無論如何。隨着版本6的常用控件的加載,XP主題甚至用於標準的Windows控件。控件的背景顏色使用xp主題顏色繪製,因此WM_CTLCOLOR *消息使用較少。

  3. 您目前正在使用WM_CTLCOLOR *消息覆蓋各種控制元素的coolor嗎?

+0

1.哦,謝謝你,我不知道。 2.確定,但有沒有辦法讓控制行爲更具體,我的目標是做出控制,當我將鼠標懸停在它上面時,可以改變背景,然後當鼠標光標離開時改變回來。使用winXp主題,是默認的舊式按鈕是非常難看的。 3.是的。 – n535 2009-10-26 06:47:19

+0

除了使控制完全自定義繪畫我做不相信它有可能覆蓋xp-theme顏色的控件背景顏色。 我曾經研究過的一件事實際上是製作一組主題數據,並使用主題apis加載它作爲當前應用主題。我相信它不可能創建新的系統主題,因爲uxtheme.dll只會加載簽名(由MS)主題文件,我不知道這是否適用於每個應用程序主題。 (假設這種事情甚至是可能的)。 – 2009-10-26 09:15:14

+0

MSDN中的「視覺樣式參考」既有前途又有前途:有很多API用於處理各種主題數據,但沒有明顯的方法來生成自己的主題數據。它基本上*看起來只不過是一個描述ux-theme如何在內部設置繪圖標準窗口控件的大量文檔。 – 2009-10-26 09:27:16