GUI fade "in" / "out" mit Hintergrundfarbe

  • Hier ein neues kleines Script von mir.

    Fadet ein GUI Fenster ein oder aus.
    Beim fade "out" kann man eine Hintergrundfarbe für die GUI wählen.

    Es gibt ja viele ähnliche Scripte mit WinSetTrans in einem Loop.
    Ich nutze bei mir den dllcall von "Raindancer"

    Bei dem fade "in" habe ich Time nicht veränderbar gemacht, weil ich denke
    das 1000 als default reicht.

    Der Aufruf ist:
    _WinFade_BK( WinTitle, Fade , Color , Time , Exit)
    default sind,
    fade "out", keine Farbe, Time = 2000 und Exit.

    Exit beendet das Programm nach dem Fade.

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Region ### START Koda GUI section ###
    $Frm = GUICreate("_WinFade_BK", 197, 160, 384, 218)
    $Btn_1 = GUICtrlCreateButton("Button1", 16, 40, 75, 25, 0)
    $Btn_2 = GUICtrlCreateButton("Button2", 104, 40, 75, 25, 0)
    $Btn_3 = GUICtrlCreateButton("Close - green", 104, 80, 75, 25, 0)
    $Btn_4 = GUICtrlCreateButton("Close - blue", 16, 80, 75, 25, 0)
    _WinFade_BK($Frm, "in")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _WinFade_BK($Frm, "out", 0xFFFF00); yellow
    Exit
    Case $Btn_3
    _WinFade_BK($Frm, "out", 0xC0DCC0); green
    Case $Btn_4
    _WinFade_BK($Frm, "out", 0x9DB9EB); blue
    ; oder _WinFade_BK($Frm, "", 0x9DB9EB); blue
    EndSwitch
    WEnd
    ;====================================================================================================
    ; Function : _WinFade_BK( WinTitle, Fade , Color , Time , Exit)
    ; Description : Fade a Window in or out ( Mit Hintergrundfarbe des GUI-Fensters bei fade "out"
    ; Author - Date - V : Thunder-man (Frank Michalski) - 27. September 2007 - V 1.00
    ; Parameter : Fade = "out" or "in" default = "out"
    ; Time (nur bei fade "out" default = 2000)
    ; Exit = True or False default = True ( Programm wird nach dem Fade, beendet)
    ; Example : _WinFade_BK($Frm, "out", 0xC0DCC0); green
    ;=====================================================================================================
    Func _WinFade_BK($WinTitle, $Fade = "out", $BkColor = "", $iTime = 2000, $Exit = True)
    If $Fade = "in" Then
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $WinTitle, "int", 1000, "long", 0x00080000);By Raindancer - fade-in
    ElseIf $Fade = "out" or $Fade = "" Then
    If Not $BkColor = "" Then
    GUISetBkColor($BkColor)
    EndIf
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $WinTitle, "int", $iTime, "long", 0x00090000);By Raindancer -fade-out
    If $Exit Then
    Exit
    EndIf
    EndIf
    EndFunc ;==>_WinFade_BK
    ;=====================================================================================================

    [/autoit]
  • So an sich ganz net. Das kann man, aber warum nutzt du nicht WinSetTrans:

    Spoiler anzeigen
    Code
    For $i = 0 to 255 step 5				
    				If $i= 5 then GUISetState()
    				Sleep(5)
    				WinSetTrans($gHandle,"",$i)
    			Next
  • @zio82draw
    ich hatte es vorher auch so ähnlich, aber so macht es ja fast jeder...
    Daher ging ich mal, (wie auch in der Beschreibung steht) einen anderen Weg.

    greeting
    Frank

  • Hmmm, vielleicht ?(.

    Aber dieser dll Aufruf kann halt noch viel mehr und wird so ähnlich
    im Xskin animate benutzt.

    Hat aber wohl hier seinen Ursprung.

  • ||

    Ah, sehr nett. Man müsste sich mal richtig mit den ganzen Bibliotheken auseinander setzen. Schon sehr mächtig die Dinger.

    ||