Как я могу оформить свой графический интерфейс как Aero Glass GUI с AutoIt? - PullRequest
0 голосов
/ 13 февраля 2019

Как мне получить эффект Aero Glass для моего Autoit GUI?

Я немного играю с AutoIt, чтобы расширить свои знания о GUI.Обычно я просто создаю сценарии без использования графического интерфейса, но мне хотелось бы иметь красивый графический интерфейс, когда я только начинаю работать.

Я уже экспериментирую с WinSetTrans , ноэто не совсем то, что я хочу.Это должно выглядеть больше как на рисунке ниже.

Aero Glass Example

Мой текущий код:

#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

Это возможно с Autoit?Как я могу это сделать?

1 Ответ

0 голосов
/ 13 февраля 2019

Да, это возможно.Это должно работать по крайней мере для Windows 7. Я не смог протестировать скрипт на компьютере с Windows 10.

Улучшенный код:

#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

Я переключился WinSetTrans() за _aeroGlassEffect().Вы можете изменить параметры функции $iLeft, $iRight, $iTop, $iBottom.

...