【已解决】关于状态栏颜色的小问题
本帖最后由 anythinging 于 2021-2-26 11:33 编辑遇到个小问题,背景色和状态栏用的是同样的代码,但显示 的颜色却不一样,系统是win10帮助文件中的这句不是很理解 ,返回 RGB COLORREF 颜色, 传递颜色值必须是 16 位 BGR 颜色值, 或 RGB COLORREF 值.
感谢指点!
#include <ColorConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <WinAPITheme.au3>
Example()
Func Example()
Local $hGUI, $hStatus
Local $aParts =
; 创建 GUI
$hGUI = GUICreate("设置状态栏背景颜色", 400, 300)
GUISetBkColor(0x0000FF)
$hStatus = _GUICtrlStatusBar_Create($hGUI)
GUISetState(@SW_SHOW)
; to allow the setting of Bk Color at least under Windows 10
_WinAPI_SetWindowTheme($hStatus, "", "")
; 设置部件
_GUICtrlStatusBar_SetParts($hStatus, $aParts)
_GUICtrlStatusBar_SetText($hStatus, "部件 1")
_GUICtrlStatusBar_SetText($hStatus, "部件 2", 1)
_GUICtrlStatusBar_SetText($hStatus, "部件 3", 2)
; 设置背景颜色
;~ _GUICtrlStatusBar_SetBkColor($hStatus, $CLR_MONEYGREEN)
_GUICtrlStatusBar_SetBkColor($hStatus, 0x0000FF)
; 循环到用户退出.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>Example
一个是 RGB 一个是 BGR,顾名思义,需要替换下前两位后两位的位置,可以 Bit 位操作,也可以纯字符串操作
; 设置背景颜色
_GUICtrlStatusBar_SetBkColor($hStatus, _sRGB2BGR('0x0000FF'))
Func _sRGB2BGR($sRGB)
Return StringRegExpReplace(StringFormat('%06s', StringRegExpReplace($sRGB, '(?i)^0x', '')), '(?i)^(..)(..)(..)', '0x${3}${2}${1}')
EndFunc ;==>_sRGB2BGR 之前设置gui,button一直用的是0x16进制颜色代码都是正常的,直到这次用在状态栏上不一样了。 感谢指点,已解决。
就算知道原因也没撤,不会写A版的那个表达式。
页:
[1]