# смена фона панелей
RegisterCommand 70053 "BackColorSelect"
Func BackColorSelect(lParam)
Local bkg1, bkg2
Local dark = IniRead("~/R", COMMANDER_INI, "Configuration", "DarkMode", 0)
Local sect = (Not dark ? "Colors" : "ColorsDark")
IniRead /R bkg1 %COMMANDER_INI% %"sect" "BackColor" -1
IniRead /R bkg2 %COMMANDER_INI% %"sect" "BackColor2" -1
Local occ = Callback("ColorChooseProc", "hwnd;uint;wparam;lparam")
Local cls = Buffer(64), buf = Buffer(auX64 ? 72 : 36)
cls.Zero()
cls.SetNum(0, "dword", 0x000000FF, _
"dword", 0x0000FF00, _
"dword", 0x00FF0000, _
"dword", 0x00FFFFFF, _
"dword", 0x00808080)
buf.Zero()
If auX64 Then
buf.SetNum(0, "dword", buf.size)
buf.SetNum(8, "hwnd", AUTORUN_TCHANDLE)
buf.SetNum(16, "hwnd", 0, _
"uint", bkg1)
buf.SetNum(32, "ptr", cls.ptr, _
"dword", 0x00000113)
buf.SetNum(48, "lparam", 0, _
"ptr", occ.ptr)
Else
buf.SetNum(0, "dword", buf.size, _
"hwnd", AUTORUN_TCHANDLE, _
"hwnd", 0, _
"uint", bkg1, _
"ptr", cls.ptr, _
"dword", 0x00000113, _
"lparam", 0, _
"ptr", occ.ptr)
EndIf
If Not DllCall("comdlg32.dll\ChooseColorW", "ptr", buf.ptr, "bool") Then
WriteBackColor(bkg1, bkg2)
EndIf
Free(buf, cls, occ)
EndFunc
Func WriteBackColor(Color1, Color2)
# темный режим
Local dark = IniRead("~/R", COMMANDER_INI, "Configuration", "DarkMode", 0)
# выбор секции
Local Section = (Not dark ? "Colors" : "ColorsDark")
# запись значений
IniWrite("~/R", COMMANDER_INI, Section, "BackColor", Color1)
IniWrite("~/R", COMMANDER_INI, Section, "BackColor2", Color2)
# обновление панелей
SendCommand 2957
SendCommand 2957
EndFunc
Func ColorChooseProc(hWnd, uMsg, wParam, lParam)
Static IDOK = 1, IDCANCEL = 2, WM_COMMAND = 0x0111
Static r, g, b, c, max = 1*255 + 256*255 + 65536*255, last = -2
If uMsg = WM_COMMAND Then
If wParam = IDOK Or wParam = IDCANCEL Then Return 0
r = WinGetText(WinFind(hWnd, "Edit", 4))
g = WinGetText(WinFind(hWnd, "Edit", 5))
b = WinGetText(WinFind(hWnd, "Edit", 6))
If StrLen(r) = 0 Then r = 0
If StrLen(g) = 0 Then g = 0
If StrLen(b) = 0 Then b = 0
c = 1*r + 256*g + 65536*b
WinSetText("RGB: " & r & ", " & g & ", " & b, hWnd)
If Not IsInt(c) Then Return 0
If c = last Then Return 0
If c >= -1 And c <= max Then
WriteBackColor(c, c)
last = c
Endif
EndIf
Return 0
EndFunc
|