システムカラーの変更 <TOP>
システムカラーを変更してみます。
GetSysColor システムカラーの取得
SetSysColors システムカラーの設定
変更する箇所をラジオボタンで指定すると、現在の色(Old/New)が表示されます。
色選択ボタン『ColorSelect』で色を選択すると、
Newにその色が表示されます。『SetSysColors』で選択した部分のシステムカラーが変更されます。『Return』で元の色に戻ります。
リソースプロパティでラジオボタンのイベントは全てRADIOOPL_ONに書き換えておきます。
また、Radio1〜Radio20のテキストは右端(見えない部分)に00〜20までの文字が付加されています。
'================================================================ '= システムカラーの変更 '= (SetSysColors.bas) '================================================================ #include "Windows.bi" ' システムの背景色を取得 Declare Function Api_GetSysColor& Lib "user32" Alias "GetSysColor" (ByVal nIndex&) ' システムカラーを設定 Declare Function Api_SetSysColors& Lib "user32" Alias "SetSysColors" (ByVal nChanges&, lpSysColor&, lpColorValues&) #define COLOR_SCROLLBAR 0 'スクロールバーの軸の色 #define COLOR_BACKGROUND 1 '壁紙なしのデスクトップの色 #define COLOR_ACTIVECAPTION 2 'アクティブウィンドウのタイトルバーの色 #define COLOR_INACTIVECAPTION 3 '非アクティブウィンドウのタイトルバーのテキストの色 #define COLOR_MENU 4 'メニューの背景色 #define COLOR_WINDOW 5 'ウィンドウの背景色 #define COLOR_WINDOWFRAME 6 'ウィンドウの枠の色 #define COLOR_MENUTEXT 7 'メニュー内のテキストの色 #define COLOR_WINDOWTEXT 8 'ウィンドウ内のテキストの色 #define COLOR_CAPTIONTEXT 9 'アクティブウィンドウのタイトルバーのテキストの色 #define COLOR_ACTIVEBORDER 10 'アクティブウィンドウの境界の色 #define COLOR_INACTIVEBORDER 11 '非アクティブウィンドウの境界色 #define COLOR_APPWORKSPACE 12 'MDIアプリケーションの背景色 #define COLOR_HIGHLIGHT 13 'コントロール内における選択された項目の色 #define COLOR_HIGHLIGHTTEXT 14 'コントロール内における選択された項目のテキストの色 #define COLOR_BTNFACE 15 '3Dオブジェクトの表面色 #define COLOR_BTNSHADOW 16 '3Dオブジェクトの影の色 #define COLOR_GRAYTEXT 17 '淡色状態(無効状態)のテキストの色 #define COLOR_BTNTEXT 18 'プッシュボタンのテキストの色 #define COLOR_INACTIVECAPTIONTEXT 19 '非アクティブウィンドウのテキストの色 #define COLOR_BTNHIGHLIGHT 20 '3Dオブジェクトの最も明るい色 Var Shared Part As Long Var Shared col As byte Var Shared oldColor As Long Var Shared rgbColor As Long Var Shared Picture1 As Object Var Shared Picture2 As Object Picture1.Attach GetDlgItem("Picture1") Picture2.Attach GetDlgItem("Picture2") '================================================================ '= '================================================================ Declare Sub Color_Set edecl () Sub Color_Set() Picture1.SetFillColor oldColor Picture1.Line(0, 0) - (Picture1.GetWidth - 1, Picture1.Getheight - 1), Pset,, Bf Picture2.SetFillColor rgbColor Picture2.Line(0, 0) - (Picture2.GetWidth - 1, Picture2.Getheight - 1), Pset,, Bf End Sub '================================================================ '= '================================================================ Declare Sub Mainform_Start edecl () Sub Mainform_Start() col = 0 oldColor = Api_GetSysColor(COLOR_SCROLLBAR) rgbColor = Api_GetSysColor(COLOR_SCROLLBAR)
Color_Set
End Sub
'================================================================
'=
'================================================================
Declare Sub RadioOpl_on edecl ()
Sub RadioOpl_on()
Var Radio As Object
Radio.Attach GetFocus
static Opl$
col = Val(Right$(Radio.GetWindowText, 2))
Select Case col
Case 0
Part = COLOR_SCROLLBAR
Case 1
Part = COLOR_BACKGROUND
Case 2
Part = COLOR_ACTIVECAPTION
Case 3
Part = COLOR_INACTIVECAPTION
Case 4
Part = COLOR_MENU
Case 5
Part = COLOR_WINDOW
Case 6
Part = COLOR_WINDOWFRAME
Case 7
Part = COLOR_MENUTEXT
Case 8
Part = COLOR_WINDOWTEXT
Case 9
Part = COLOR_CAPTIONTEXT
Case 10
Part = COLOR_ACTIVEBORDER
Case 11
Part = COLOR_INACTIVEBORDER
Case 12
Part = COLOR_APPWORKSPACE
Case 13
Part = COLOR_HIGHLIGHT
Case 14
Part = COLOR_HIGHLIGHTTEXT
Case 15
Part = COLOR_BTNFACE
Case 16
Part = COLOR_BTNSHADOW
Case 17
Part = COLOR_GRAYTEXT
Case 18
Part = COLOR_BTNTEXT
Case 19
Part = COLOR_INACTIVECAPTIONTEXT
Case 20
Part = COLOR_BTNHIGHLIGHT
End Select
oldColor = Api_GetSysColor(Part)
rgbColor = Api_GetSysColor(Part)
Color_Set
End Sub
'================================================================
'= 色選択ダイアログ
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
If ChooseColor(rgbColor) = 0 Then
rgbColor = oldColor
Exit Sub
End If
Color_Set
End Sub
'================================================================
'= システムカラーを変更する
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
Var Ret As Long
Ret = Api_SetSysColors(1, Part, rgbColor)
End Sub
'================================================================
'= 色を元へ戻す
'================================================================
Declare Sub Button3_on edecl ()
Sub Button3_on()
Var Ret As Long
Ret = Api_SetSysColors(1, Part, oldColor)
rgbColor = oldColor
Color_Set
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End