AntonD
AntonD

Reputation: 15

How can i style my GUI as Aero Glass GUI with AutoIt?

How can i get the Aero Glass effect for my Autoit GUI?

I am playing a bit with AutoIt to increase my knowledge about GUI stuff. Usually i just create scripts without the usage of a GUI, but i would like to have a nice looking areo glass GUI when i just start to work with.

I already experiment with WinSetTrans but this is not exactly what i want. It should look more like the image below.

Aero Glass Example

My current code is:

#include <GUIConstants.au3>

$iWidthGui = 450
$iHeightGui = 300

$hGui = GUICreate("Glass GUI", $iWidthGui, $iHeightGui, -1, -1, -1, $WS_EX_TOPMOST)
$cExit = GUICtrlCreateButton("Exit", $iWidthGui / 2 - 50, $iHeightGui / 2 - 15, 100, 30)
GUISetState( @SW_SHOW )

WinSetTrans($hGui, "", 180)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $cExit
            GUIDelete($hGui)
            ExitLoop
    EndSwitch
WEnd

Is it possible with Autoit? How can i do that?

Upvotes: 0

Views: 822

Answers (1)

user10815634
user10815634

Reputation:

Yes it is possible. This should work at least for Windows 7. I couldn't test the script on a Windows 10 machine.

Improved code:

#include-once
#include <GUIConstants.au3>

Global $iWidthGui  = 450
Global $iHeightGui = 300

Global $hGui  = GUICreate("Glass GUI", $iWidthGui, $iHeightGui, -1, -1, -1, $WS_EX_TOPMOST)
Global $cExit = GUICtrlCreateButton("Exit", $iWidthGui / 2 - 50, $iHeightGui / 2 - 15, 100, 30)
GUISetState( @SW_SHOW, $hGui )

Func _aeroGlassEffect( $hWnd, $iLeft = @DesktopWidth, $iRight = @DesktopWidth, $iTop = @DesktopWidth, $iBottom = @DesktopWidth )
    $hStruct = DllStructCreate( 'int left; int right; int height; int bottom;' )
    DllStructSetData( $hStruct, 'left', $iLeft )
    DllStructSetData( $hStruct, 'right', $iRight )
    DllStructSetData( $hStruct, 'height', $iTop )
    DllStructSetData( $hStruct, 'bottom', $iBottom )
    GUISetBkColor( '0x000000' )
    Return DllCall( 'dwmapi.dll', 'int', 'DwmExtendFrameIntoClientArea', 'hWnd', $hWnd, 'ptr', DllStructGetPtr( $hStruct ) )
EndFunc

_aeroGlassEffect( $hGui )

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $cExit
            GUIDelete($hGui)
            ExitLoop
    EndSwitch
WEnd

I switched WinSetTrans() for _aeroGlassEffect(). You can change the function parameters $iLeft, $iRight, $iTop, $iBottom.

Upvotes: 1

Related Questions