Tooltip Transparent und durchlässig

  • bei Fenster geht das ja mit WinSetTrans und _Win_SetClickThrough von Prog@ndy ... kann man das ganze auch mit Tooltips machen?

    ich hab ne schleife mit timer, das fenster dazu soll aber durchsichtig und durchlässig sein, damit es immer sichtbar ist, aber nicht stört.
    wenn ich in der schleife winsettrans mache, flackert das fenster immer ... mache ich einmal winsettrans, ist es nur kurz transparent.

    jmd ne lösung?

  • ne aber ein paar Fragen:

    Code?

    Zuerst fragst du ob das auch mit nem ToolTip geht und dann schreibst du weiter unten dass das Fenster flackert?... Wie denn nun? :D

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • naja, auf die art, wie ich es probiert habe, flackert das fenster, also nicht praktikabel, darum frage ich hier, nach ner besseren lösung ;)

    denke mal, das ganze geht auch ohne code, aber hier ist ein ausschnitt, wie der ablauf des timers/tooltips ist

    [autoit]

    Do
    $diff = TimerDiff($begin)
    ToolTip("in " & Round(($Countdown * 1000 - $diff) / 1000) & " Seconds" & @CRLF & @CRLF & "Press END to Exit", 0, 0, $head)
    Sleep(100)
    Until $diff >= $Countdown * 1000

    [/autoit]
  • also irgendwie steh ich grad aufm schlauch, du willst das der ToolTip transparent wird und wenn du das mit winsettrans machst flackert das fenster in dem der ToolTip angezeigt wird oder wie?

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • 1. Variante = flackert

    [autoit]

    Opt("WinTitleMatchMode", 2)
    Do
    $diff = TimerDiff($begin)
    ToolTip("in " & Round(($Countdown * 1000 - $diff) / 1000) & " Seconds" & @CRLF & @CRLF & "Press END to Exit", 0, 0, $head)
    WinSetTrans("Press END to Exit", "", 150)
    Sleep(100)
    Until $diff >= $Countdown * 1000

    [/autoit]

    2. Variante = nur kurz Transparent

    [autoit]

    Opt("WinTitleMatchMode", 2)
    AdlibEnable("_Trans", 1000)
    Do
    $diff = TimerDiff($begin)
    ToolTip("in " & Round(($Countdown * 1000 - $diff) / 1000) & " Seconds" & @CRLF & @CRLF & "Press END to Exit", 0, 0, $head)
    Sleep(100)
    Until $diff >= $Countdown * 1000

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

    Func _Trans()
    WinSetTrans("Press END to Exit", ""; 150)
    AdlibDisable();würde sonst auch flackern
    EndFunc

    [/autoit]
  • naja bei variante 2 ists ja eigentlich logisch,

    Du startest die funktion und beendest sie auch gleich wieder, danach kommt erst die Schleife wo der ToolTip überhaupt angezeigt wird, da er jedes mal neu erstellt wird flackert er wohl auch... Das ist wohl das primäre Problem, es würde gehen wenn du den ToolTip quasi nur einmal erstellst und dann nur per Setdata den Inhalt verändern könntest... da sowas meines wissens aber nicht geht könntest du auf die etwas aufwendigere Variante zurückgreifen: GUI

    Mach dir eine eigene GUI mit entsprechenden Styles sodass sie keine Border usw hat und dann machst du in der schleife ungefähr sowas (wenn du das fenster bei der Maus anzeigen lassen willst)

    Spoiler anzeigen
    [autoit]


    $gui = GUICreate(200, 30, Default, Default, $WS_POPUPWINDOW)
    $label = GUICtrlCreateLabel("", 5, 5, 190, 20)
    GUISetState(@SW_HIDE)
    ;dann dein code wie auch immer bis der Tooltip halt erscheinen soll

    GUISetState(@SW_SHOW, $gui)
    WinSetTrans($gui, "", 170)
    Do
    $pos = MouseGetPos()
    ;Mir fällt grad der Befehl net ein um die GUI zu positionieren :( *sry* kommt vllt noch
    ;Mit WinMove halt mal
    WinMove($gui, "", $pos[0]+5, $pos[1]+5)
    GUICtrlSetData($label, "Dein Countdown")
    Until $diff >= $Countdown * 1000
    GUISetState(@SW_HIDE, $gui)

    [/autoit]

    Mhh.. mir fällt grad nur WinMove ein, vllt gibts aber auch noch was mit GUISet oder so :pinch:

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    2 Mal editiert, zuletzt von FireFlyer (15. August 2008 um 10:33)

  • jo dann muss er ja nurnoch die UDF von progandy nehmen... da mein selbstgebastelter tooltip ja ein win ist :D

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    • Offizieller Beitrag

    So, das Flackern habe ich jetzt fast wegbekommen :).
    Das ist entstanden, weil du alle 100 ms den Tooltipp gesetzt hast, auch wenn noch keine Sekunde rum war.

    [autoit]

    Global $begin = TimerInit(), $diff, $diff_alt = 0, $sec
    Global $Countdown = 10
    Global $head = 'test'
    ToolTip("in " & ($Countdown - $sec) & " Seconds" & @CRLF & @CRLF & "Press END to Exit", 0, 0, $head)
    WinSetTrans("[CLASS:tooltips_class32]", "", 150)
    Do
    $diff = TimerDiff($begin)
    $sec = Floor($diff/1000)
    If $sec > $diff_alt Then
    $diff_alt = $sec
    ToolTip("in " & ($Countdown - $sec) & " Seconds" & @CRLF & @CRLF & "Press END to Exit", 0, 0, $head)
    WinSetTrans("[CLASS:tooltips_class32]", "", 150)
    EndIf
    Sleep(100)
    Until $diff >= $Countdown * 1000

    [/autoit]