如何改变窗口标题栏的颜色(100分)

  • 主题发起人 主题发起人 ctx62
  • 开始时间 开始时间
C

ctx62

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,窗口正常情况下总是由左至右是由深蓝变到浅蓝,如何改变它的颜色<br>最好能给出代码
 
处理WM_NCPaint消息<br><br>private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; &nbsp; procedure WMNCPAint(var Mes : TWMNCPaint); message WM_NCPAINT;<br><br>procedure TForm1.WMNCPaint(var Mes : TWMNCPaint);<br>var<br>&nbsp; ACanvas : TCanvas;<br>begin<br>&nbsp; ACanvas := TCanvas.Create;<br>&nbsp; try<br>&nbsp; &nbsp; ACanvas.Handle := GetWindowDC(Form1.Handle);<br>&nbsp; &nbsp; with ACanvas do begin<br>&nbsp; &nbsp; &nbsp; Brush.Color := clActiveCaption;<br>&nbsp; &nbsp; &nbsp; Font.Name := 'Times New Roman';<br>&nbsp; &nbsp; &nbsp; Font.Size := 10;<br>&nbsp; &nbsp; &nbsp; Font.Color := clCaptionText;<br>&nbsp; &nbsp; &nbsp; Font.Style := [fsItalic, fsBold];<br>&nbsp; &nbsp; &nbsp; TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height))/2) +1,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ' Your title here!');<br>&nbsp; &nbsp; end;<br>&nbsp; finally<br>&nbsp; &nbsp; ReleaseDC(Form1.Handle, ACanvas.Handle);<br>&nbsp; &nbsp; ACanvas.Free;<br>&nbsp; end;<br>end;
 
to arnew<br>我在XP系统和D7下编译,没有达到我所希望的效果,而且窗口移动后有毛病,左上角的<br>图标没有了,我是想改变标题栏的背景颜色(比方说,把它改变成由左至右由深绿到浅绿)<br>不是改变字体(的颜色、大小、样式)<br>还望再指教,谢谢<br>
 
&nbsp; &nbsp;你可以做一个自己标题栏而不用系统的,这样就可以有很大的灵活性,要多处理系统消息。<br>&nbsp; &nbsp; 另一种就是同意arnew的提出的并在要inherited;
 
to arnew,dhtlsse<br>我试了一下,在开始时加上inherited效果很好,我就是想改系统的标题栏颜色<br>我改变Brush.Color的值可以改变有文字部分的背景颜色,但不能显示渐变色<br>(即由深红到浅红)<br>另外如何窗口很窄时标题栏有点不正常。<br>还望各位高人指教
 
自已做一个标题栏不就行了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
609
import
I
I
回复
0
查看
764
import
I
后退
顶部