2010-01-07 100 views
3

使用Delphi 7試圖從窗口主題更改軟件標題欄的顏色。我看過代碼,它允許你改變所有程序的所有標題欄,但我只是想改變我的程序。更改應用程序標題欄的顏色

任何人都看過/做過類似的事情嗎?如果需要,不要介意爲組件支付費用。

回答

4

我相信Windows會將WM_NCPAINT消息發送給應用程序,當它應該繪製包含標題欄的窗口框架時。默認行爲是回退到繪製默認框架的默認Windows處理程序。您可以替換它,或者在之後重新繪製標題欄部分。

這看起來像一個很好的例子:http://delphi.about.com/od/adptips2006/qt/draw_captionbar.htm

2

由斯泰恩答案是沒有完全完成,作爲窗口的標題和邊框當它是(去)激活也將被重新繪製。因此,除了WM_NCPAINT之外,您還需要處理WM_NCACTIVATE。不幸的是,這不能簡單地被替換,因爲在缺省消息處理程序中有其他代碼(除了繪圖代碼)需要執行。但是,調用默認處理程序將導致首先繪製默認標題和邊框,然後您需要用預期顏色繪製,從而導致閃爍。

解決此問題的一種方法是調整使用默認消息處理程序調用的繪圖區域。有關使用Windows API調用的示例,請參閱"Drawing titlebar on XP with themes",該調用應該很容易轉換爲Delphi。請注意,這隻適用於標題欄中的文字,但適用該原則。

1

你可能會看看皮膚庫。 DevExpress的ExpressSkin是一個不錯的選擇。