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
#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
$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
While 1
Sleep(100)
WEnd
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
Edit: Mein Fehler, viel zu dumm angestellt, jetzt ist alles klar