#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>

$hGui = GUICreate("Тест прозрачности", 300, 400, -1, -1, -1, $WS_EX_LAYERED)
GUICtrlCreateLabel("Этот текст на прозрачном слое GUI", 10, 10, 200, 20, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetTip(-1, "Тяни за этот текст, чтобы перетащить многослойное окно")
$layButt = GUICtrlCreateButton("Кнопка", 10, 40, 40)
GUISetBkColor(0xABCDEF)
_WinAPI_SetLayeredWindowAttributes($hGui, 0x010101)
GUISetState()

$guicontrol = GUICreate("Управляющий GUI", 350, 400, 100, 100)
$checkTrans = GUICtrlCreateCheckbox("Цвет прозрачности 0xABCDEF (если отмечено) или 0x010101", 10, 10)
$checkBorder = GUICtrlCreateCheckbox("Стиль POPUP", 10, 30)
GUICtrlCreateLabel("Установка прозрачности многослойного GUI", 10, 70)
$slidTrans = GUICtrlCreateSlider(10, 90, 200, 30)
GUICtrlSetLimit($slidTrans, 255, 0)
GUICtrlSetData(-1, 255)
GUISetState()

While 1
	$extMsg = GUIGetMsg(1)
	$msg = $extMsg[0]
	Switch $extMsg[1]
		Case $guicontrol
			Switch $extMsg[0]
				Case $GUI_EVENT_CLOSE
					Exit
				Case $checkTrans, $slidTrans

					; Изменяет атрибуты прозрачного цвета и прозрачности окна

					If BitAND(GUICtrlRead($checkTrans), $GUI_CHECKED) = $GUI_CHECKED Then
						_WinAPI_SetLayeredWindowAttributes($hGui, 0xABCDEF, GUICtrlRead($slidTrans))
					Else
						_WinAPI_SetLayeredWindowAttributes($hGui, 0x010101, GUICtrlRead($slidTrans))
					EndIf

				Case $checkBorder
					If BitAND(GUICtrlRead($checkBorder), $GUI_CHECKED) = $GUI_CHECKED Then
						GUISetStyle($WS_POPUP, -1, $hGui)
					Else
						GUISetStyle($GUI_SS_DEFAULT_GUI, -1, $hGui)
					EndIf
			EndSwitch
		Case $hGui
			Switch $extMsg[0]
				Case $layButt
					Dim $transcolor, $alpha
					$info = _WinAPI_GetLayeredWindowAttributes($hGui, $transcolor, $alpha)
					MsgBox(4096, 'Многослойный GUI', "Информация об окне: " & @CRLF & _
						"Цвет прозрачности: " & $transcolor & @CRLF & _
						"Глубина прозрачности: " & $alpha & @CRLF & _
						"LWA_COLORKEY: " & (BitAND($info, $LWA_COLORKEY) = $LWA_COLORKEY) & @CRLF & _
						"LWA_ALPHA: " & (BitAND($info, $LWA_ALPHA) = $LWA_ALPHA))
				Case $GUI_EVENT_CLOSE
					Exit MsgBox(4096, '', "Закрывает из многослойного GUI")
			EndSwitch
	EndSwitch
WEnd