UDF: GDI+ Alternativer ToolTip

  • Da der Standard ToolTip von Windows so langweilig aussieht, habe ich mir einfach meinen eigenen gemacht. :thumbup:
    Die UDF benötigt allerdings auch wieder die GDIP.au3. Ich hoffe es gefällt euch und ich würde mich wie immer über Verbesserungen/Kritik freuen. :)
    Bei Bedarf könnte ich ja noch weitere Designs für ToolTips gestalten. ;)

    UDF
    [autoit]

    #include-once

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

    ; #INDEX# =======================================================================================================================
    ; Title .........: ToolTipEx
    ; AutoIt Version : 3.3.6+
    ; Language ......: Deutsch
    ; Description ...: Funktionen für einen alternativen ToolTip.
    ; Author ........: name22 (autoit.de)
    ; ===============================================================================================================================

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

    ; #CURRENT# =====================================================================================================================
    ;_ToolTip_Create
    ;_ToolTip_BGSetColor
    ;_ToolTip_TextSetColor
    ;_ToolTip_BorderSetColor
    ;_ToolTip_BorderSetWidth
    ;_ToolTip_FontSetOptions
    ; ===============================================================================================================================

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

    ; #INTERNAL_USE_ONLY# ===========================================================================================================
    ;__ToolTip_Shutdown
    ;__ToolTip_ReDraw
    ; ===============================================================================================================================

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

    #include <GDIP.au3>
    #include <WinApi.au3>
    #include <WindowsConstants.au3>

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

    OnAutoItExitRegister("__ToolTip_Shutdown")

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

    Global $hBitmap_Tip, $hBuffer_Tip, $iRadius_Tip = 3, $iWidth_Win, $iHeight_Win

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

    $hWnd_Tip = GUICreate("", 100, 100, Default, Default, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))

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

    _GDIPlus_Startup()

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

    $hFormat_Tip = _GDIPlus_StringFormatCreate()
    $hFamily_Tip = _GDIPlus_FontFamilyCreate("Arial")
    $hFont_Tip = _GDIPlus_FontCreate($hFamily_Tip, 10)

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

    $hGraphic_Tip = _GDIPlus_GraphicsCreateFromHWND($hWnd_Tip)

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

    $hBrush_BG_Tip = _GDIPlus_BrushCreateSolid(0xD0202020)
    $hBrush_Text_Tip = _GDIPlus_BrushCreateSolid(0xE0E0E0E0)
    $hBrush_Hatch_Tip = _GDIPlus_HatchBrushCreate($HatchStyleCross, 0xD0D0D0D0, 0xD0F0F0F0)
    $hPen_Border_Tip = _GDIPlus_PenCreate(0xE0E57913, 2)

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

    $hDC = _WinAPI_GetDC($hWnd_Tip)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", 100)
    DllStructSetData($tSize, "Y", 100)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_Create
    ; Description ...: Zeigt einen ToolTip an der gewünschten Position an.
    ; Syntax.........: _ToolTip_Create($sText_Tip, [$iX = False, [$iY = False, [$iStyle_Tip = 0]]])
    ; Parameters ....: $sText_Tip - Text des ToolTips.
    ; $iX - [optional] X-Koordinate des ToolTips.
    ; $iY - [optional] Y-Koordinate des ToolTips.
    ; $iStyle_Tip - [optional] Stil des ToolTips. 0 = Abgerundetes Rechteck mit Pfeil nach unten.
    ; 1 = Abgerundetes Rechteck mit Pfeil nach oben.
    ; 2 = Rechteck mit kariertem Hintergrund.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Ein Leerstring als Text, löscht den zuvor gesetzten ToolTip.
    ; Werden keine Koordinaten angegeben, wird der ToolTip in die Nähe des Mauszeigers gesetzt.
    ; ===============================================================================================================================
    Func _ToolTip_Create($sText_Tip, $iX = False, $iY = False, $iStyle_Tip = 0)
    Switch $sText_Tip
    Case ""
    GUIRegisterMsg($WM_PAINT, "")
    GUISetState(@SW_HIDE, $hWnd_Tip)
    Case Else
    If $iX = False And $iY = False Then
    $iX = MouseGetPos(0)
    $iY = MouseGetPos(1)
    EndIf

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

    GUIRegisterMsg($WM_PAINT, "")
    $tLayout_Tip = _GDIPlus_GraphicsMeasureString($hGraphic_Tip, $sText_Tip, $hFont_Tip, _GDIPlus_RectFCreate(), $hFormat_Tip)

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

    Switch $iStyle_Tip
    Case 0
    $iWidth_Tip = DllStructGetData($tLayout_Tip[0], "width") + 6
    $iHeight_Tip = DllStructGetData($tLayout_Tip[0], "height") + 6
    $iX_Tip = 1
    $iY_Tip = 1
    DllStructSetData($tLayout_Tip[0], "x", $iX_Tip + 3)
    DllStructSetData($tLayout_Tip[0], "y", $iY_Tip + 3)

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

    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    $hBitmap_Tip = _GDIPlus_BitmapCreateFromGraphics($iWidth_Tip + $iX_Tip + 2, $iHeight_Tip + $iY_Tip + 13, $hGraphic_Tip)
    $hBuffer_Tip = _GDIPlus_ImageGetGraphicsContext($hBitmap_Tip)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer_Tip, 2)

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

    DllStructSetData($tSize, "X", $iWidth_Tip + $iX_Tip + 2)
    DllStructSetData($tSize, "Y", $iHeight_Tip + $iY_Tip + 13)
    DllStructSetData($tPoint, "X", $iX - DllStructGetData($tSize, "X") / 2)
    DllStructSetData($tPoint, "Y", $iY - DllStructGetData($tSize, "Y"))

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

    $hPath_Tip = _GDIPlus_PathCreate()
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -180, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iRadius_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 0, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip + $iHeight_Tip, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip + $iHeight_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip + $iHeight_Tip + 10)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip + $iHeight_Tip + 10, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip + $iHeight_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip, $iX_Tip, $iY_Tip + $iRadius_Tip)

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

    _GDIPlus_GraphicsFillPath($hBuffer_Tip, $hPath_Tip, $hBrush_BG_Tip)
    _GDIPlus_GraphicsDrawPath($hBuffer_Tip, $hPath_Tip, $hPen_Border_Tip)
    _GDIPlus_PathDispose($hPath_Tip)
    Case 1
    $iWidth_Tip = DllStructGetData($tLayout_Tip[0], "width") + 6
    $iHeight_Tip = DllStructGetData($tLayout_Tip[0], "height") + 6
    $iX_Tip = 1
    $iY_Tip = 12
    DllStructSetData($tLayout_Tip[0], "x", $iX_Tip + 3)
    DllStructSetData($tLayout_Tip[0], "y", $iY_Tip + 3)

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

    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    $hBitmap_Tip = _GDIPlus_BitmapCreateFromGraphics($iWidth_Tip + $iX_Tip + 2, $iHeight_Tip + $iY_Tip + 2, $hGraphic_Tip)
    $hBuffer_Tip = _GDIPlus_ImageGetGraphicsContext($hBitmap_Tip)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer_Tip, 2)

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

    DllStructSetData($tSize, "X", $iWidth_Tip + $iX_Tip + 2)
    DllStructSetData($tSize, "Y", $iHeight_Tip + $iY_Tip + 2)
    DllStructSetData($tPoint, "X", $iX - DllStructGetData($tSize, "X") / 2)
    DllStructSetData($tPoint, "Y", $iY)

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

    $hPath_Tip = _GDIPlus_PathCreate()
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -180, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 - 5, $iY_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip - 10)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2, $iY_Tip - 10, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip / 2 + 5, $iY_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip, $iRadius_Tip * 2, $iRadius_Tip * 2, -90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iRadius_Tip, $iX_Tip + $iWidth_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip * 2, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 0, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip + $iWidth_Tip - $iRadius_Tip, $iY_Tip + $iHeight_Tip, $iX_Tip + $iRadius_Tip, $iY_Tip + $iHeight_Tip)
    _GDIPlus_PathAddArc($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip * 2, $iRadius_Tip * 2, $iRadius_Tip * 2, 90, 90)
    _GDIPlus_PathAddLine($hPath_Tip, $iX_Tip, $iY_Tip + $iHeight_Tip - $iRadius_Tip, $iX_Tip, $iY_Tip + $iRadius_Tip)

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

    _GDIPlus_GraphicsFillPath($hBuffer_Tip, $hPath_Tip, $hBrush_BG_Tip)
    _GDIPlus_GraphicsDrawPath($hBuffer_Tip, $hPath_Tip, $hPen_Border_Tip)
    _GDIPlus_PathDispose($hPath_Tip)
    Case 2
    $iWidth_Tip = DllStructGetData($tLayout_Tip[0], "width") + 6
    $iHeight_Tip = DllStructGetData($tLayout_Tip[0], "height") + 6
    DllStructSetData($tLayout_Tip[0], "x", 3)
    DllStructSetData($tLayout_Tip[0], "y", 3)

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

    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    $hBitmap_Tip = _GDIPlus_BitmapCreateFromGraphics($iWidth_Tip, $iHeight_Tip, $hGraphic_Tip)
    $hBuffer_Tip = _GDIPlus_ImageGetGraphicsContext($hBitmap_Tip)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer_Tip, 2)

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

    DllStructSetData($tSize, "X", $iWidth_Tip)
    DllStructSetData($tSize, "Y", $iHeight_Tip)
    DllStructSetData($tPoint, "X", $iX)
    DllStructSetData($tPoint, "Y", $iY)

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

    _GDIPlus_GraphicsFillRect($hBuffer_Tip, 0, 0, $iWidth_Tip, $iHeight_Tip, $hBrush_Hatch_Tip)
    EndSwitch

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

    _GDIPlus_GraphicsDrawStringEx($hBuffer_Tip, $sText_Tip, $hFont_Tip, $tLayout_Tip[0], $hFormat_Tip, $hBrush_Text_Tip)
    __ToolTip_ReDraw()

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

    If BitAND(WinGetState($hWnd_Tip), 2) <> 2 Then GUISetState(@SW_SHOWNOACTIVATE, $hWnd_Tip)

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

    GUIRegisterMsg($WM_PAINT, "__ToolTip_ReDraw")
    EndSwitch

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

    EndFunc ;==>_ToolTip_Create

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: __ToolTip_ReDraw
    ; Description ...: Zeichnet den ToolTip neu.
    ; Syntax.........: __ToolTip_ReDraw()
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Intern genutzte Funktion.
    ; ===============================================================================================================================
    Func __ToolTip_ReDraw()
    Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_Tip)
    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd_Tip, $hDC, $pPoint, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)
    EndFunc ;==>_ToolTip_ReDraw

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_BGSetColor
    ; Description ...: Ändert die Hintergundfarbe des ToolTips auf den gewünschten ARGB Farbwert ab.
    ; Syntax.........: _ToolTip_BGSetColor([$NewColor])
    ; Parameters ....: $NewColor - [optional] Neuer Farbwert im Format 0xAARRGGBB. Transparenz wird unterstützt.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Gilt nur für ToolTip Style 0/1.
    ; ===============================================================================================================================
    Func _ToolTip_BGSetColor($NewColor = 0xD0202020)
    _GDIPlus_BrushSetSolidColor($hBrush_BG_Tip, $NewColor)
    EndFunc ;==>_ToolTip_BGSetColor

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_TextSetColor
    ; Description ...: Ändert die Textfarbe des ToolTips auf den gewünschten ARGB Farbwert ab.
    ; Syntax.........: _ToolTip_TextSetColor([$NewColor])
    ; Parameters ....: $NewColor - [optional] Neuer Farbwert im Format 0xAARRGGBB. Transparenz wird unterstützt.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: -
    ; ===============================================================================================================================
    Func _ToolTip_TextSetColor($NewColor = 0xE0E0E0E0)
    _GDIPlus_BrushSetSolidColor($hBrush_Text_Tip, $NewColor)
    EndFunc ;==>_ToolTip_TextSetColor

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_BorderSetColor
    ; Description ...: Ändert die Randlinienfarbe des ToolTips auf den gewünschten ARGB Farbwert ab.
    ; Syntax.........: _ToolTip_BorderSetColor([$NewColor])
    ; Parameters ....: $NewColor - [optional] Neuer Farbwert im Format 0xAARRGGBB. Transparenz wird unterstützt.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Gilt nur für ToolTip Style 0/1.
    ; ===============================================================================================================================
    Func _ToolTip_BorderSetColor($NewColor = 0xE0E57913)
    _GDIPlus_PenSetColor($hPen_Border_Tip, $NewColor)
    EndFunc ;==>_ToolTip_BorderSetColor

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_BorderSetWidth
    ; Description ...: Ändert die Randliniendicke des ToolTips auf den gewünschten Dezimalwert ab.
    ; Syntax.........: _ToolTip_BorderSetWidth([$fWidth])
    ; Parameters ....: $fWidth - [optional] Neuer Wert.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Ein zu großer Wert kann Fehldarstellungen verursachen.
    ; Gilt nur für ToolTip Style 0/1.
    ; ===============================================================================================================================
    Func _ToolTip_BorderSetWidth($fWidth = 2)
    _GDIPlus_PenSetWidth($hPen_Border_Tip, $fWidth)
    EndFunc ;==>_ToolTip_BorderSetWidth

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_FontSetOptions
    ; Description ...: Ändert die Einstellungen für den Text des ToolTips.
    ; Syntax.........: _ToolTip_FontSetOptions($sFont = "Arial", $fSize = 10, $iStyle = 0)
    ; Parameters ....: $sFont - [optional] Schriftart des ToolTips.
    ; $fSize - [optional] Schriftgröße des ToolTips.
    ; $iStyle - [optional] Schriftstil des ToolTips. 0 = "Normal"; 1 = "Fett"; 2 = "Kursiv"; 4 = "Unterstrichen";
    ; 8 = "Durchgestrichen". Werte können kombiniert werden.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: -
    ; ===============================================================================================================================
    Func _ToolTip_FontSetOptions($sFont = "Arial", $fSize = 10, $iStyle = 0)
    _GDIPlus_FontFamilyDispose($hFamily_Tip)
    _GDIPlus_FontDispose($hFont_Tip)
    $hFamily_Tip = _GDIPlus_FontFamilyCreate($sFont)
    $hFont_Tip = _GDIPlus_FontCreate($hFamily_Tip, $fSize, $iStyle)
    EndFunc ;==>_ToolTip_FontSetOptions

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ToolTip_HatchSetColors
    ; Description ...: Ändert die Einstellungen für den Text des ToolTips.
    ; Syntax.........: _ToolTip_HatchSetColors($ARGB_Lines = 0xD0D0D0D0, $ARGB_BG = 0xD0F0F0F0)
    ; Parameters ....: $ARGB_Lines - [optional] Linienfarbe des karierten ToolTipMusters.
    ; $ARGB_BG - [optional] Hintergrundfarbe des karierten ToolTipMusters.
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Gilt nur für den ToolTip Style 2
    ; ===============================================================================================================================
    Func _ToolTip_HatchSetColors($ARGB_Lines = 0xD0D0D0D0, $ARGB_BG = 0xD0F0F0F0)
    _GDIPlus_BrushDispose($hBrush_Hatch_Tip)
    $hBrush_Hatch_Tip = _GDIPlus_HatchBrushCreate($HatchStyleCross, $ARGB_Lines, $ARGB_BG)
    EndFunc ;==>_ToolTip_FontSetOptions

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: __ToolTip_Shutdown
    ; Description ...: Entfernt die von der UDF verwendeten Ressourcen aus dem Arbeitsspeicher.
    ; Syntax.........: __ToolTip_Shutdown()
    ; Return values .: -
    ; Author ........: name22 (autoit.de)
    ; Remarks .......: Intern genutzte Funktion.
    ; ===============================================================================================================================
    Func __ToolTip_Shutdown()
    GUIRegisterMsg($WM_PAINT, "")
    _GDIPlus_GraphicsDispose($hGraphic_Tip)
    _GDIPlus_BitmapDispose($hBitmap_Tip)
    _GDIPlus_GraphicsDispose($hBuffer_Tip)
    _GDIPlus_StringFormatDispose($hFormat_Tip)
    _GDIPlus_FontDispose($hFont_Tip)
    _GDIPlus_FontFamilyDispose($hFamily_Tip)
    _GDIPlus_BrushDispose($hBrush_BG_Tip)
    _GDIPlus_BrushDispose($hBrush_Text_Tip)
    _GDIPlus_BrushDispose($hBrush_Hatch_Tip)
    _GDIPlus_PenDispose($hPen_Border_Tip)
    _GDIPlus_Shutdown()
    EndFunc ;==>_ToolTip_Shutdown

    [/autoit]
    Beispiel neu
    [autoit]

    #include "ToolTipEx.au3"
    #include <GUIConstants.au3>

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

    _ToolTip_FontSetOptions("Courier New", 10)
    _ToolTip_TextSetColor(0xD0202020)

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

    Global $aText[8]
    $aText[0] = "Produced by:" & @CRLF & "name22"
    $aText[1] = "Written by:" & @CRLF & "name22"
    $aText[2] = "Eexcutive Director:" & @CRLF & "name22"
    $aText[3] = "Research:" & @CRLF & "name22"
    $aText[4] = "Publicity:" & @CRLF & "name22"
    $aText[5] = "Special Thanks To:" & @CRLF & "Higggiii" & @CRLF & "H112" & @CRLF & "UEZ"
    $aText[6] = "name22 Studios presents..."
    $aText[7] = "The ToolTip"

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

    $iCurText = 0

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

    $fTimer = TimerInit()

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

    While Sleep(30)
    Switch TimerDiff($fTimer) >= 2000
    Case False
    _ToolTip_Create($aText[$iCurText], 400, 400, 2)
    Case True
    For $iTransparency = 0 To 100 Step 10
    _ToolTip_TextSetColor("0x" & Hex(Round(208 / 100 * (100 - $iTransparency)), 2) & "020202")
    _ToolTip_Create($aText[$iCurText], 400, 400, 2)
    Sleep(30)
    Next
    Sleep(100)
    $iCurText += 1
    If $iCurText = 7 Then _ToolTip_FontSetOptions("Segoe Script", 14)
    If $iCurText = 8 Then
    _ToolTip_FontSetOptions("Courier New", 10)
    $iCurText = 0
    EndIf
    For $iTransparency = 0 To 100 Step 10
    _ToolTip_TextSetColor("0x" & Hex(Round(208 / 100 * $iTransparency), 2) & "020202")
    _ToolTip_Create($aText[$iCurText], 400, 400, 2)
    Sleep(30)
    Next
    $fTimer = TimerInit()
    EndSwitch
    WEnd

    [/autoit]
    Beispiel alt
    [autoit]

    #include <ToolTipEx.au3>
    #include <GUIConstants.au3>

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

    _ToolTip_FontSetOptions("Segoe Print", 8)

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

    $fTimer = TimerInit()

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

    While Sleep(30)
    $aMousePos = MouseGetPos()
    Switch TimerDiff($fTimer) >= 3000
    Case False
    _ToolTip_Create("MousePos:" & @CRLF & $aMousePos[0] & ":" & $aMousePos[1], $aMousePos[0], $aMousePos[1] - 15, 0)
    Case True
    _ToolTip_FontSetOptions("Segoe Script", 12)
    _ToolTip_TextSetColor(0xD0202020)
    For $iTransparency = 0 To 100
    $aMousePos = MouseGetPos()
    _ToolTip_Create("name22", $aMousePos[0], $aMousePos[1] - 15, 0)
    _ToolTip_BGSetColor("0x" & Hex(Floor(208 / 100 * (100 - $iTransparency)), 2) & "202020")
    _ToolTip_BorderSetColor("0x" & Hex(Floor(224 / 100 * (100 - $iTransparency)), 2) & "E57913")
    Sleep(30)
    Next
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • So... Habe mal aus Langeweile einen neuen Style für die ToolTip UDF gemacht. :D Und ein cooleres Beispiel ist jetzt auch mit dabei. Erwartet aber nicht zuviel, da ich es erstens wie gesagt aus Langeweile gemacht habe und zweitens auch keine guten Ideen für einen neuen Style einfallen wollen. :S Falls ihr Ideen oder andere Verbesserungsvorschläge habt, dann teilt es mir mit ;) .

  • Kannst du dein altes Beispiel nochmals anhängen oder posten? Habe das Beispiel mit dem neuen überschrieben... :pinch:
    Das erste Beispiel sprach mich mehr an, obwohl das zweite natürlich auch gut aussieht :thumbup:

  • Danke! 8)

    Du hast in der UDF vergessen zu erwähnen, was der Paramter $iStyle_Tip bei _ToolTip_Create() mit dem Wert 3 darstellt ;)

  • Coole UDF, aber einen "Bug" hab ich gefunden, der mich ziemlich stört. Jedes mal wenn der ToolTip angezeigt wird, wird das HauptGUI kurz in den "Hintergrund" gesetzt und danach erneut aktiviert. Dabei wird z.B. bei einer ListView kurz das Ausgewählte "Item" aus dem Fokus genommen und dann wieder makiert sogesagt, fällt mir schwer das in Deutsch auszudrücken.

  • Hab mir die neue Version geladen und läuft jetzt einwandfrei :) Dankeschön für die UDF nochmals.

  • Naja, ich hätte das so niemals umsetzen können :D
    ToolTip-Design Ideen hätte ich im Moment keine, höchstens Ideen für Control-Designs von bereits existierenden Controls. Aber das gehört hier nicht rein.