_GUICtrlStatusBar_SetBkColor Funktioniert nicht

  • Hallo Ihr lieben,
    ich versuche verzweifelt die Funktion _GUICtrlStatusBar_SetBkColor zum laufen zu bringen. Nicht einmal der in der Hilfedatei angegebene Code funktioniert. Meine Statusbar ist immer noch "Fenster grau".

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Debug_SB = False ; Prüft den Klassennamen (ClassName), der an die StatusBar-Funktion
    übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle
    zu einem anderen Control, um die Funktionsweise zu
    verstehen.

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func
    _Main()

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    ; Erstellt eine GUI
    $hGUI = GUICreate("StatusBar: Hintergrundfarbe setzen", 400,
    300)

    $hStatus = _GUICtrlStatusBar_Create($hGUI)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]


    ; Setzt die Abschnitte

    _GUICtrlStatusBar_SetParts($hStatus, $aParts)
    _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 1")
    _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 2", 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Setzt die Hintergrundfarbe
    _GUICtrlStatusBar_SetBkColor($hStatus, $CLR_MONEYGREEN)

    [/autoit] [autoit][/autoit] [autoit]


    ; Die Schleife wiederholt sich, bis der Benutzer die
    Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]

    Kennt Ihr das Problem ?

    Grüße Tim

    • Offizieller Beitrag

    Die Funktion hat noch nie funtioniert.

    Edit: Habe in meinem Codepool etwas gefunden, was dir weiterhelfen kann:

    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>

    [/autoit][autoit][/autoit][autoit]

    Dim $XS_n

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit][autoit][/autoit][autoit]

    _Main()

    [/autoit][autoit][/autoit][autoit]

    Func _Main()

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit][autoit][/autoit][autoit]

    ; Create GUI

    [/autoit][autoit][/autoit][autoit]

    $hGUI = GUICreate("(Example 1) StatusBar Set BkColor", 400, 300)
    XPStyle(1)
    $hStatus = _GUICtrlStatusBar_Create ($hGUI)
    XPStyle(0)
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    ; Set parts
    _GUICtrlStatusBar_SetParts ($hStatus, $aParts)
    _GUICtrlStatusBar_SetText ($hStatus, "Part 1")
    _GUICtrlStatusBar_SetText ($hStatus, "Part 2", 1)

    [/autoit][autoit][/autoit][autoit]

    ; Set background color
    _GUICtrlStatusBar_SetBkColor ($hStatus, $CLR_MONEYGREEN)

    [/autoit][autoit][/autoit][autoit]

    ; Loop until user exits

    [/autoit][autoit][/autoit][autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit]


    Der Trick dabei ist, das vor dem Erstellen des Statusbar der XPStyle aufgerufen wird