VB.Net 如何設定 視窗標題列 Title bar 顏色

VB.Net 如何設定 視窗標題列 Title bar 顏色

如何設定 視窗標題列 Title bar 顏色

Public Class Form1

' API 宣告

Private Declare Function SetSysColors Lib "user32" _

(ByVal nChanges As Integer, _

ByRef lpSysColor As Integer, _

ByRef lpColorValues As Integer) As Integer

Private Declare Function GetSysColor Lib "user32" _

(ByVal nIndex As Integer) As Integer

' SetSysColors API 是用來設定視窗元素的顯示顏色

' GetSysColors API 是用來取得視窗元素的顯示顏色

' 自訂列舉值, 視窗介面的顯示元素

Private Enum DisplayElement

Scrollbar = 0

Background = 1

ActiveCaption = 2

InactiveCaption = 3

Menu = 4

Window = 5

WindowFrame = 6

MenuText = 7

WindowText = 8

CaptionText = 9

ActiveBorder = 10

InactiveBorder = 11

AppWorkspace = 12

Highlight = 13

HighlightText = 14

BtnFace = 15

BtnShadow = 16

GrayText = 17

BtnText = 18

InactiveCaptionText = 19

BtnHighlight = 20

DkShadow3D = 21

Light3D = 22

InfoText = 23

InfoBk = 24

GradientActiveCaption = 27

GradientInactiveCaption = 28

End Enum

Private Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Handles Button1.Click

' 改變視窗標題列顏色為藍色

If Set_Color(DisplayElement.ActiveCaption, Color.Blue) Then Debug.WriteLine("OK!")

' 改變視窗標題列漸層顏色為綠色

If Set_Color(DisplayElement.GradientActiveCaption, Color.Green) Then Debug.WriteLine("OK!")

' 取得視窗標題列顏色

Debug.WriteLine(ColorTranslator.FromOle(GetSysColor(DisplayElement.ActiveCaption)).ToString)

' 取得視窗標題列漸層顏色

Debug.WriteLine(ColorTranslator.FromWin32(GetSysColor(DisplayElement.GradientActiveCaption)).ToString)

' 也可以使用陣列一次處理多項設定, 如:

' 陣列中指定標題列顏色跟漸層顏色項目

Dim objElement() As Integer = {DisplayElement.ActiveCaption, DisplayElement.GradientActiveCaption}

' 陣列中指定紅色及黃色

Dim objColor() As Integer = {ColorTranslator.ToOle(Color.Red), ColorTranslator.ToOle(Color.Yellow)}

' 呼叫API 一次設定2 項

If SetSysColors(2, objElement(0), objColor(0)) Then MessageBox.Show("Change OK!")

End Sub

' 設定視窗元素屬性

Private Function Set_Color(ByVal Element As Short, ByVal NewColor As Color) As Boolean

Return SetSysColors(1, Element, ColorTranslator.ToOle(NewColor))

' 或

' Return SetSysColors(1, Element, ColorTranslator.ToWin32(NewColor))

End Function

End Class

' ColorTranslator 類別

' ToOle 方法 : 將指定的 Color 結構轉換為 OLE 色彩。

' ToWin32 方法 : 將指定的 Color 結構轉換為 Windows 色彩。

' FromOle 方法 : 將 OLE 色彩值轉換為 GDI+ Color 結構。

' FromWin32 方法 : 將 Windows 色彩值轉換為 GDI+ Color 結構。

注意 : SetSysColors API 是將 Windows 的 "視窗外觀" 的顯示設定做 "改變" ,

因此 , 一改就所是有程式的表單都更動囉 !