Child-GUI - nur Label-Zeichen sichtbar machen

  • Nabend,

    ich habe folgendes Problem:
    In einem Child-GUI soll alles bis auf das Label transparent gemacht werden (wird über die GUI-Styles erreicht), es muss zwingend ein Child-GUI verwendet werden.
    Nun funktioniert das in dem Quasi-Haupt-GUI auch, aber nich im Child-GUI, wieso weiß ich leider nicht, da beide GUIs zusätzlich noch Childs eines Hide-GUIs sind, um keine Anzeige in der Taskleiste zu bekommen...

    Es ist etwas schwierig zu erklären, letztendlich möchte ich, dass beide GUIs transparent sind, und nur die Label-Zeichen angezeigt werden (wie in $GUI)...

    Ich hoffe auf Hilfe, es muss doch eine Möglichkeit geben, Gruß Andy :)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>

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

    $Hide = GUICreate("Hide", 1, 1, 1, 1)
    $GUI = GUICreate("", 100, 20, -1, @DesktopHeight / 2 - 20, $WS_POPUP, $WS_EX_LAYERED, $Hide)
    GUISetBkColor(0xABCDEF)
    GUISetFont(8.5, 0, -1, "")
    GUICtrlCreateLabel("Test Test Bla Bla 1", 0, 0, 100, 20)
    SetLayeredWindowAttributes_Trans($GUI, 0xABCDEF, 180)
    GUISetState(@SW_SHOW) ; funktioniert wie gewollt, nur Label-Zeichen zu sehen

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

    $GUI_Child = GUICreate("", 100, 20, -1, @DesktopHeight / 2 + 20, $WS_POPUP, $WS_EX_LAYERED, $Hide) ; ?
    GUISetBkColor(0xABCDEF)
    GUISetFont(8.5, 0, -1, "")
    GUICtrlCreateLabel("Test Test Bla Bla 2", 0, 0, 100, 20)
    SetLayeredWindowAttributes_Trans($GUI_Child, 0xABCDEF, 180) ; ?
    GUISetState(@SW_SHOW) ; soll genauso angezeigt werden, wie das obere GUI, wird aber einfach garnicht angezeigt

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

    While 1
    Sleep(100)
    WEnd

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

    Func SetLayeredWindowAttributes_Trans($hwnd, $color = 0x000000, $trans = 255) ; etwas verändert , Func ursprünglich von progandy (kann mich auch irren)
    $color = Execute('0x00' & StringMid(Hex(String($color), 6), 5, 2) & StringMid(Hex(String($color), 6), 3, 2) & StringMid(Hex(String($color), 6), 1, 2))
    DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $color, "byte", $trans, "long", 0x03)
    EndFunc

    [/autoit]

    Edit: Mein Fehler, viel zu dumm angestellt, jetzt ist alles klar

    Einmal editiert, zuletzt von AndyTR (18. Juni 2011 um 13:22)