Tranzparenter Festertitel

  • Moin

    Ich habe hier ein Bsp. Script, bei dem alle paar Sekunden der Titel geändert wir.

    So jetzt sieht die Titeländerung recht unatraktiv aus, deshalb würde ich diesen gerne immer einbelenden bzw. Ausblenden. Anders gesagt bei jeder Titeländerung den Titel von Sichtbar bis Komplett Tranzparent und umgekehrt setzen.

    Ist das realisierbar?

    Spoiler anzeigen
    [autoit]


    Global $hGUI, $GUI, $Titelindex

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

    opt("GUIOnEventMode",1)
    $GUI = GUICreate("Anfangstitel",300,200)
    $hGUI = WinGetHandle($GUI)
    GUISetOnEvent(-3,"_exit")
    GUISetState()

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

    $Timer_ChangeTitle = TimerInit()

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

    While 1
    If TimerDiff($Timer_ChangeTitle) > 3000 Then Change_Titel()
    Sleep(100)
    WEnd

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

    Func Change_Titel()
    Local $aTitels[6] = ["Anfangstitel","Titel 2","Nächster Titel","Noch ein Titel","Titel 5"]

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

    If $Titelindex = UBound($aTitels)-1 Then $Titelindex = 0
    WinSetTitle($hGUI,"",$aTitels[$Titelindex])
    $Titelindex += 1
    $Timer_ChangeTitle = TimerInit()
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    EDIT: Ne möglichkeit wäre natürlich ne Child Gui mit nem Label zu erstellen und diese an den Platz des Titel zu legen aber geht es auch einfacher?

    EDIT EDIT: Ich hab auch so nen schönen kleinen effekt hinbekommen. Aber für lösungen zur Ausgangsfrage würde ich mich Trozdem freuen.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Global $hGUI, $GUI, $Titelindex

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

    opt("GUIOnEventMode",1)
    $GUI = GUICreate("Anfangstitel",300,200)
    $hGUI = WinGetHandle($GUI)
    GUISetOnEvent(-3,"_exit")
    GUISetState()

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

    $Timer_ChangeTitle = TimerInit()

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

    While 1
    If TimerDiff($Timer_ChangeTitle) > 3000 Then Change_Titel()
    Sleep(100)
    WEnd

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

    Func Change_Titel()
    Local $aTitels[6] = ["Anfangstitel","Titel 2","Nächster Titel","Noch ein Titel","Titel 5"], $AktTitle,$aAktTitle, $aNewTitle

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

    If $Titelindex = UBound($aTitels)-1 Then $Titelindex = 0

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

    $AktTitle = WinGetTitle($hGUI)
    $aAktTitle = StringSplit($AktTitle,"")
    For $i = 1 To $aAktTitle[0]
    WinSetTitle($hGUI,"",_ArrayToString($aAktTitle,"",$i))
    Sleep(150)
    Next

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

    WinSetTitle($hGUI,"","")
    Sleep(500)

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

    $aNewTitle = StringSplit($aTitels[$Titelindex],"")
    For $i = $aNewTitle[0] To 1 Step -1
    WinSetTitle($hGUI,"",_ArrayToString($aNewTitle,"",$i))
    Sleep(150)
    Next
    WinSetTitle($hGUI,"",$aTitels[$Titelindex])
    $Titelindex += 1
    $Timer_ChangeTitle = TimerInit()
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    mfg Darter

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    2 Mal editiert, zuletzt von Darter (1. Juli 2010 um 12:20)

    • Offizieller Beitrag

    Hallo

    Sowas in der Art?

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>

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

    Global $hGUI, $GUI, $Titelindex

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

    Opt("GUIOnEventMode", 1)
    $GUI = GUICreate("Anfangstitel", 300, 200)
    GUISetOnEvent(-3, "_exit")
    GUISetState()
    $hChild = GUICreate("Child", 300, 200, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $GUI)
    GUICtrlCreateButton("Blabla", 0, 0, 200, 20)
    GUISetState()
    GUISetOnEvent(-3, "_exit")

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

    While 1
    Sleep(2000)
    _ChangeTitle(@HOUR & ":" & @MIN & ":" & @SEC);Normale Geschwindigkeit
    Sleep(1000)
    _ChangeTitle(@HOUR & ":" & @MIN & ":" & @SEC, 15);Schnelle Geschwindigkeit
    Sleep(1000)
    _ChangeTitle(@HOUR & ":" & @MIN & ":" & @SEC, 2);Langsame Geschwindigkeit
    WEnd

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

    Func _ChangeTitle($sNewTitle, $iSpeed = 5)

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

    For $i = 255 To 0 Step $iSpeed * - 1
    WinSetTrans($GUI, "", $i)
    Sleep(10)
    Next
    WinSetTitle($GUI, "", $sNewTitle)
    For $i = 0 To 255 Step $iSpeed
    WinSetTrans($GUI, "", $i)
    Sleep(10)
    Next
    WinSetTrans($GUI, "", 255)
    EndFunc ;==>_ChangeTitle

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]

    Gruß
    Spider


  • hmm nein nicht ganz. In deinem Bsp. wird ja kuzfristig die ganze GUI tranzparent.
    Es solle nur der Titel tranzparent werden.
    Aber eig. könnte man es ja so machen, dass man eben eine Child GUI erstellt, diese Über den Titel legt und dann eben von keiner Tranzparen bis volle Tranzparents setzt.
    Soweit ja auch nicht das große ding, allerding muss dies Child, welches ja direkt über der Titelleiste liegt durchklickbar sein, sonst ist die HauptGUI ja nichtmehr verschiebbar.

    Ich hatte da acuh mal ne Funk bzw. nen Dll call oder ne Struk um das zu realisieren, leider finde ich diese nicht mehr :(

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.