SetSysColor nur Lokal anwenden?

    • Offizieller Beitrag

    Hallo

    Hat jemand eine Idee, wie ich den WinApi befehl SetSysColors nur für die momentane AutoIt instanz anwenden kann?
    Hier das skript was ich habe, funktioniert alles einwandfrei soweit, aber die Menü farbe werden bei ALLEN fenstern geändert.
    Ich will aber das nur bei diesem Fenster die Menü farbe geändert wird.

    Spoiler anzeigen
    [autoit]

    #include <GuiMenu.au3>
    #include <WinAPI.au3>

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

    $COLOR_MENUTEXT = 7

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

    $hGUI = GUICreate("")
    GUISetBkColor(0)
    $hMenu = GUICtrlCreateMenu("Test1")
    $hMenu2 = GUICtrlCreateMenuItem("test123",$hMenu)
    _GUICtrlMenu_SetMenuBackground(_GUICtrlMenu_GetMenu($hGUI),_WinAPI_CreateSolidBrush(0))
    _GUICtrlMenu_SetMenuStyle(GUICtrlGetHandle($hMenu),$MNS_NOCHECK)
    Dim $aElem[1] = [$COLOR_MENUTEXT],$aColor[1] = [0xff8f00],$aBevore[1] = [_WinAPI_GetSysColor($COLOR_MENUTEXT)]
    _WinAPI_SetSysColors($aElem,$aColor) ;Set

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

    GUISetState()

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

    while GUIGetMsg() <> -3
    WEnd

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

    Func OnAutoItExit()
    _WinAPI_SetSysColors($aElem,$aBevore)
    EndFunc

    [/autoit]

    Gut wäre auch noch zu wissen wie ich die Farbe nur von dem "Hauptmenü" ändern kann, also das menü was am anfang oben da ist, nicht die SubMenüs.

    Wäre super wenn jemand helfen kann ;)

    Mfg Spider

    p.s.: ich möchte nicht die ModernMenu.au3 benutzen da die sehr unsauber ist und das ein wichtiges projekt ist ;)

    Edit Mega : währe in wäre :P

  • Modern Menu ist zu unsauber ? Dann musst du es selber schreiben ... SetSysColors ist eben Global :(
    Für die Farbige Menubar hab ich mal einen Mod geschrieben, die ist aber wirklich unsauber ;)