• Offizieller Beitrag

    Hi.

    Hatte gerade mal en bischen Langeweile und deshalb hab ich mal en Script verbrochen .
    Ist mein 1. Script was ich im Forum zu besten gebe , habt erbamen mit mir .
    Das Script ist eigentlich Sinnfrei aber es ist ein gutes Beispiel wie man GUI´s ausrollen und wieder einrollen kann .
    Die Geschwindigkeit des Aus- und Einrolleffekts kann man mit den Slidern Steprate und Sleep beinflussen.
    Viel Spaß beim ausprobieren .

    Spoiler anzeigen
    [autoit]

    #include <GuiSlider.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    Opt("GUIResizeMode", 802); Control werden abgedockt entspricht GUICtrlSetResizing( -1,$GUI_DOCKALL) bei allen Controls
    Opt("GUIOnEventMode", 1)
    ;~ DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 9)
    Global Const $WS_EX_COMPOSITED = 0x2000000
    Global $Steprate = 10
    Global $Sleep = 5
    $Form1 = GUICreate("Spielereien mit der Gui ", 350, 400, 1, 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    $Button1 = GUICtrlCreateButton("Rollin links nach rechts ", 16, 24, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button1")
    $Button2 = GUICtrlCreateButton("Rollout rechts nach links", 16, 64, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button2")
    $Button4 = GUICtrlCreateButton("Rollin rechts nach links ", 180, 24, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button4")
    $Button5 = GUICtrlCreateButton("Rollout links nach rechts ", 180, 64, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button5")
    $Button6 = GUICtrlCreateButton("Rollin unten nach oben ", 16, 104, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button6")
    $Button7 = GUICtrlCreateButton("Rollout oben nach unten ", 16, 144, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button7")
    $Button8 = GUICtrlCreateButton("Rollin oben nach unten ", 180, 104, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button8")
    $Button9 = GUICtrlCreateButton("Rollout unten nach oben ", 180, 144, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button9")
    $Button3 = GUICtrlCreateButton("Beenden", 16, 350, 73, 33, 0)
    GUICtrlSetOnEvent(-1, "_Ende")
    $Button10 = GUICtrlCreateButton("Autodemo ", 180, 350, 133, 33, 0)
    GUICtrlSetOnEvent(-1, "_Button10")
    GUICtrlCreateGroup("Steprate festlegen :", 10, 200, 320, 60)
    Global $hSlider1 = GUICtrlCreateSlider(16, 220, 300, 30, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))
    _GUICtrlSlider_SetRange($hSlider1, 1, 20)
    GUICtrlSetData(-1, $Steprate)
    GUICtrlCreateGroup("Sleep festlegen :", 10, 260, 320, 60)
    Global $hSlider2 = GUICtrlCreateSlider(16, 280, 300, 30, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))
    GUICtrlSetData(-1, $Sleep)
    _GUICtrlSlider_SetRange($hSlider2, 0, 100)
    GUISetState(@SW_SHOW)

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

    $Form2 = GUICreate("Beispiel-GUI", 633, 447, 400, 400, BitOR($WS_POPUP, $WS_SIZEBOX), $WS_EX_COMPOSITED)
    $Input2 = GUICtrlCreateInput("Input1", 120, 32, 385, 21)
    $Buttonx = GUICtrlCreateButton("Bla", 16, 24, 73, 33, 0)
    $Buttony = GUICtrlCreateButton("Blub ", 16, 64, 73, 33, 0)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Buttonz = GUICtrlCreateButton("BlaBla ", 16, 104, 73, 33, 0)
    $List1 = GUICtrlCreateList("", 528, 40, 81, 71)
    $Progress1 = GUICtrlCreateProgress(64, 320, 521, 49)
    $TreeView1 = GUICtrlCreateTreeView(24, 168, 73, 129)
    GUISetState(@SW_HIDE)
    _RolloutDisable()
    While 1
    Sleep(50)
    WEnd
    Func _Button1()
    _RollinDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 1 To Round(633 / $Steprate)
    If $i * $Steprate < 633 Then
    _GuiResize($Form2, 400, 400, $i * $Steprate, 447)
    Else
    _GuiResize($Form2, 400, 400, 633, 447)
    EndIf
    Sleep($Sleep)
    Next
    GUISwitch($Form1)
    EndFunc ;==>_Button1
    Func _Button2()
    _RolloutDisable()
    GUICtrlSetState($Button2, $GUI_DISABLE)
    GUICtrlSetState($Button1, $GUI_Enable)
    For $i = Round(633 / $Steprate) To 0 Step -1
    If $i * $Steprate < 633 Then
    _GuiResize($Form2, 400, 400, $i * $Steprate, 447)
    ;~ Else
    ;~ _GuiResize($Form2, 400, 400, 633, 447)
    EndIf
    Next
    GUISetState(@SW_HIDE, $Form2)
    GUISwitch($Form1)
    EndFunc ;==>_Button2
    Func _Ende()
    Exit
    EndFunc ;==>_Button3
    Func _Button4()
    _RollinDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 0 To Round(633 / $Steprate)
    If $i * $Steprate < 663 Then
    _GuiResize($Form2, 1033 - $i * $Steprate, 400, 0 + $i * $Steprate, 447)
    Else
    _GuiResize($Form2, 400, 400, 633, 447)
    EndIf
    Sleep($Sleep)
    Next
    GUISwitch($Form1)
    EndFunc ;==>_Button4
    Func _Button5()
    _RolloutDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 1 To Round(633 / $Steprate)
    If $i * $Steprate < 663 Then
    _GuiResize($Form2, 400 + $i * $Steprate, 400, 633 - $i * $Steprate, 447)
    Else
    _GuiResize($Form2, 400, 400, 633, 0)
    EndIf
    Sleep($Sleep)
    Next
    GUISetState(@SW_HIDE, $Form2)
    GUISwitch($Form1)
    EndFunc ;==>_Button5
    Func _Button6()
    _RollinDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 0 To Round(477 / $Steprate)
    If $i * $Steprate < 447 Then
    _GuiResize($Form2, 400, 847 - $i * $Steprate, 633, 1 + $i * $Steprate)
    Else
    _GuiResize($Form2, 400, 400, 633, 447)
    EndIf
    Sleep($Sleep)
    Next
    GUISwitch($Form1)
    EndFunc ;==>_Button6
    Func _Button7()
    _RolloutDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 1 To Round(477 / $Steprate)
    If $i * $Steprate < 447 Then
    _GuiResize($Form2, 400, 400 + $i * $Steprate, 633, 447 - $i * $Steprate)
    Else
    _GuiResize($Form2, 400, 1033, 633, 0)
    EndIf
    Sleep($Sleep)
    Next
    GUISetState(@SW_HIDE, $Form2)
    GUISwitch($Form1)
    EndFunc ;==>_Button7
    Func _Button8()
    _RollinDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 0 To Round(477 / $Steprate)
    If $i * $Steprate < 447 Then
    _GuiResize($Form2, 400, 400, 633, 0 + $i * $Steprate)
    Else
    _GuiResize($Form2, 400, 400, 633, 447)
    EndIf
    Sleep($Sleep)
    Next
    GUISwitch($Form1)
    EndFunc ;==>_Button8
    Func _Button9()
    _RolloutDisable()
    GUISwitch($Form1)
    GUISetState(@SW_SHOW, $Form2)
    For $i = 1 To Round(477 / $Steprate)
    If $i * $Steprate < 447 Then
    _GuiResize($Form2, 400, 400, 633, 447 - $i * $Steprate)
    Else
    _GuiResize($Form2, 400, 400, 633, 0)
    EndIf
    Sleep($Sleep)
    Next
    GUISetState(@SW_HIDE, $Form2)
    GUISwitch($Form1)
    EndFunc ;==>_Button9
    Func _Button10()
    _Button1()
    Sleep(1000)
    _Button2()
    Sleep(1000)
    _Button4()
    Sleep(1000)
    _Button5()
    Sleep(1000)
    _Button6()
    Sleep(1000)
    _Button7()
    Sleep(1000)
    _Button8()
    Sleep(1000)
    _Button9()
    Sleep(1000)
    _Button1()
    Sleep(1000)
    _Button5()
    Sleep(1000)
    _Button4()
    Sleep(1000)
    _Button2()
    Sleep(1000)
    _Button6()
    Sleep(1000)
    _Button9()
    Sleep(1000)
    _Button8()
    Sleep(1000)
    _Button7()
    EndFunc ;==>_Button10
    Func _RolloutDisable()
    Global $Steprate = GUICtrlRead($hSlider1)
    Global $Sleep = GUICtrlRead($hSlider2)
    GUICtrlSetState($Button2, $GUI_DISABLE)
    GUICtrlSetState($Button5, $GUI_DISABLE)
    GUICtrlSetState($Button7, $GUI_DISABLE)
    GUICtrlSetState($Button9, $GUI_DISABLE)
    GUICtrlSetState($Button1, $GUI_Enable)
    GUICtrlSetState($Button4, $GUI_Enable)
    GUICtrlSetState($Button6, $GUI_Enable)
    GUICtrlSetState($Button8, $GUI_Enable)
    EndFunc ;==>_RolloutDisable
    Func _RollinDisable()
    Global $Steprate = GUICtrlRead($hSlider1)
    Global $Sleep = GUICtrlRead($hSlider2)
    GUICtrlSetState($Button1, $GUI_DISABLE)
    GUICtrlSetState($Button4, $GUI_DISABLE)
    GUICtrlSetState($Button6, $GUI_DISABLE)
    GUICtrlSetState($Button8, $GUI_DISABLE)
    GUICtrlSetState($Button2, $GUI_Enable)
    GUICtrlSetState($Button5, $GUI_Enable)
    GUICtrlSetState($Button7, $GUI_Enable)
    GUICtrlSetState($Button9, $GUI_Enable)
    EndFunc ;==>_RollinDisable
    Func _GuiResize($Guiname, $Posx, $posy, $Breite, $Hoehe); Gui in der Größe ändern
    _WinAPI_SetWindowPos($Guiname, "", $Posx, $posy, $Breite, $Hoehe, "")
    EndFunc ;==>_GuiResize

    [/autoit]

    Edit:Es kann sein das Die GUI unter Windows Vista und Windows 2008 flackert das liegt am AERO Style.

    Edit 28.12.2008 hab noch 14 Effekte hinzugefügt .

  • Mit der _Winanimate.au3 flackert nichts. Außerdem ist noch viel mehr möglich.

    Spoiler anzeigen
    [autoit]

    ; Function _WinAnimate from Raindancer
    ; http://www.autoitscript.com/forum/index ... st&p=84102

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

    ;CONSTANTS
    Global Const $AW_FADE_IN = 0x00080000 ;fade-in
    Global Const $AW_FADE_OUT = 0x00090000;fade-out
    Global Const $AW_SLIDE_IN_LEFT = 0x00040001 ;slide in from left
    Global Const $AW_SLIDE_OUT_LEFT = 0x00050002 ;slide out to left
    Global Const $AW_SLIDE_IN_RIGHT = 0x00040002 ;slide in from right
    Global Const $AW_SLIDE_OUT_RIGHT = 0x00050001 ;slide out to right
    Global Const $AW_SLIDE_IN_TOP = 0x00040004 ;slide-in from top
    Global Const $AW_SLIDE_OUT_TOP = 0x00050008 ;slide-out to top
    Global Const $AW_SLIDE_IN_BOTTOM = 0x00040008 ;slide-in from bottom
    Global Const $AW_SLIDE_OUT_BOTTOM = 0x00050004 ;slide-out to bottom
    Global Const $AW_DIAG_SLIDE_IN_TOPLEFT = 0x00040005 ;diag slide-in from Top-left
    Global Const $AW_DIAG_SLIDE_OUT_TOPLEFT = 0x0005000a ;diag slide-out to Top-left
    Global Const $AW_DIAG_SLIDE_IN_TOPRIGHT = 0x00040006 ;diag slide-in from Top-Right
    Global Const $AW_DIAG_SLIDE_OUT_TOPRIGHT = 0x00050009 ;diag slide-out to Top-Right
    Global Const $AW_DIAG_SLIDE_IN_BOTTOMLEFT = 0x00040009 ;diag slide-in from Bottom-left
    Global Const $AW_DIAG_SLIDE_OUT_BOTTOMLEFT = 0x00050006 ;diag slide-out to Bottom-left
    Global Const $AW_DIAG_SLIDE_IN_BOTTOMRIGHT = 0x0004000a ;diag slide-in from Bottom-right
    Global Const $AW_DIAG_SLIDE_OUT_BOTTOMRIGHT = 0x00050005 ;diag slide-out to Bottom-right
    Global Const $AW_EXPLODE = 0x00040010 ;explode
    Global Const $AW_IMPLODE = 0x00050010 ;implode

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

    Func _WinAnimate($v_gui, $i_mode, $i_duration = 1000)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", WinGetHandle($v_gui), "int", $i_duration, "long", $i_mode)
    Local $ai_gle = DllCall('kernel32.dll', 'int', 'GetLastError')
    If $ai_gle[0] <> 0 Then
    SetError(1)
    Return 0
    EndIf
    Return 1
    EndFunc ;==>_WinAnimate

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

    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    $HauptGui = GUICreate("WinAnimate", 350, 400, 1, 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    $Mode_Combo = GUICtrlCreateCombo("", 10, 10, 200)
    GUICtrlSetOnEvent(-1, "_ShowFenster")
    GUICtrlSetData(-1, "AW_FADE_IN|AW_FADE_OUT|AW_SLIDE_IN_LEFT|AW_SLIDE_OUT_LEFT|AW_SLIDE_IN_RIGHT|AW_SLIDE_OUT_RIGHT")
    GUICtrlSetData(-1, "AW_SLIDE_IN_TOP|AW_SLIDE_OUT_TOP|AW_SLIDE_IN_BOTTOM|AW_SLIDE_OUT_BOTTOM|AW_DIAG_SLIDE_IN_TOPLEFT|AW_DIAG_SLIDE_OUT_TOPLEFT")
    GUICtrlSetData(-1, "AW_DIAG_SLIDE_IN_TOPRIGHT|AW_DIAG_SLIDE_OUT_TOPRIGHT|AW_DIAG_SLIDE_IN_BOTTOMLEFT|AW_DIAG_SLIDE_OUT_BOTTOMLEFT")
    GUICtrlSetData(-1, "AW_DIAG_SLIDE_IN_BOTTOMRIGHT|AW_DIAG_SLIDE_OUT_BOTTOMRIGHT|AW_EXPLODE|AW_IMPLODE")

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

    $Duration = GUICtrlCreateInput("10", 220, 10, 100, 20)
    GUICtrlSetTip(-1, "Zeit in 100 ms")
    GUICtrlCreateUpdown( -1)
    ;~ GUICtrlSetLimit(-1, 0, 5000)

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

    $TestGui = GUICreate("WinAnimate-Test-Fenster")
    GUISetState(@SW_SHOW, $HauptGui)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func _ShowFenster()
    _WinAnimate($TestGui, Eval(GUICtrlRead($Mode_Combo)), GUICtrlRead($Duration)*100)
    GUISetState(@SW_SHOW, $TestGui)
    EndFunc

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

    Func _Ende()
    Exit
    EndFunc ;==>_Ende

    [/autoit]


    P.S. Kannst du bitte deinen Post so editieren, dass der Autoit-Quellcode richtig angezeigt wird? Danke.
    mfg funkey

    • Offizieller Beitrag

    Das noch mehr geht an Effekten wußte ich schon. Irgendwie war schon klar, das es sowas wie eine GUI-Spielerei schon gibt. Habe danach aber noch nicht gesucht. War wie gesagt nur eine Langweilspielerei.

    Edit : Hab mal die _Winanimate.au3 gestestet. Von Wegen die flackert net. Wenn man des unter Vista laufen läßt funzt da überhaupt nix wie es soll. Der Fenterrahmen der Gui steht fest da und wird mit den Effekten gefüllt. Sobald man in dieTestGui Controls einfügt, hat man ein Flackererlebnis vom allerfeinsten. Unter WinXP macht des Script was es soll und flackert nicht.

    • Offizieller Beitrag

    Hatte gerade mal wieder zu viel Zeit und habe das Script auf 24 Effekte ausgebaut .
    Download siehe Post 1