autoit 中_GUICtrlStatusBar_SetBkColor失效的解决办法

#include <GuiConstantsEx.au3>

#include <GuiStatusBar.au3>

#include <WinAPI.au3>

#include <Constants.au3>

Dim $XS_n

$Debug_SB = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()

    Local $hGUI, $hStatus

    Local $aParts[3] = [75, 150, -1]

    ; Create GUI

XPStyle(1)

    $hGUI = GUICreate("(Example 1) StatusBar Set BkColor", 400, 300)

    $hStatus = _GUICtrlStatusBar_Create ($hGUI)

    GUISetState()

    ; Set parts

    _GUICtrlStatusBar_SetParts ($hStatus, $aParts)

    _GUICtrlStatusBar_SetText ($hStatus, "Part 1")

    _GUICtrlStatusBar_SetText ($hStatus, "Part 2", 1)

    ; Set background color

    _GUICtrlStatusBar_SetBkColor ($hStatus, $CLR_MONEYGREEN)

    ; Loop until user exits

     XPStyle(0)

    Do

    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    GUIDelete()

EndFunc   ;==>_Main

Func XPStyle($OnOff = 1)

    If $OnOff And StringInStr(@OSTYPE, "WIN32_NT") Then

        $XS_n = DllCall("uxtheme.dll", "int", "GetThemeAppProperties")

        DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)

        Return 1

    ElseIf StringInStr(@OSTYPE, "WIN32_NT") And IsArray($XS_n) Then

        DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", $XS_n[0])

        $XS_n = ""

        Return 1

    EndIf

    Return 0

EndFunc   ;==>XPStyle

 

你可能感兴趣的:(status)