Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include-once
- ; #INDEX# =======================================================================================================================
- ; Title .........: ToolTipEx
- ; AutoIt Version : 3.3.6+
- ; Language ......: Deutsch
- ; Description ...: Funktionen für einen alternativen ToolTip.
- ; Author ........: name22 (autoit.de)
- ; ===============================================================================================================================
- ; #CURRENT# =====================================================================================================================
- ;_ToolTip_Create
- ;_ToolTip_BGSetColor
- ;_ToolTip_TextSetColor
- ;_ToolTip_BorderSetColor
- ;_ToolTip_BorderSetWidth
- ;_ToolTip_FontSetOptions
- ; ===============================================================================================================================
- ; #INTERNAL_USE_ONLY# ===========================================================================================================
- ;__ToolTip_Shutdown
- ;__ToolTip_ReDraw
- ; ===============================================================================================================================
- #include <GDIP.au3>
- #include <WinApi.au3>
- #include <WindowsConstants.au3>
- OnAutoItExitRegister("__ToolTip_Shutdown")
- Global $hBitmap_Tip, $hBuffer_Tip, $iRadius_Tip = 3, $iWidth_Win, $iHeight_Win
- $hWnd_Tip = GUICreate("", 100, 100, Default, Default, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))
- _GDIPlus_Startup()
- $hFormat_Tip = _GDIPlus_StringFormatCreate()
- $hFamily_Tip = _GDIPlus_FontFamilyCreate("Arial")
- $hFont_Tip = _GDIPlus_FontCreate($hFamily_Tip, 10)
- $hGraphic_Tip = _GDIPlus_GraphicsCreateFromHWND($hWnd_Tip)
- _GDIPlus_GraphicsSetSmoothingMode($hGraphic_Tip, 2)
- _GDIPlus_GraphicsSetTextRenderingHint($hGraphic_Tip, 3)
- $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)
- $hDC = _WinAPI_GetDC($hWnd_Tip)
- $hCDC = _WinAPI_CreateCompatibleDC($hDC)
- $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)
- ; #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
- GUIRegisterMsg($WM_PAINT, "")
- $tLayout_Tip = _GDIPlus_GraphicsMeasureString($hGraphic_Tip, $sText_Tip, $hFont_Tip, _GDIPlus_RectFCreate(), $hFormat_Tip)
- 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)
- _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)
- _GDIPlus_GraphicsSetTextRenderingHint($hBuffer_Tip, 5)
- 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"))
- $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)
- _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)
- _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)
- _GDIPlus_GraphicsSetTextRenderingHint($hBuffer_Tip, 5)
- 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)
- $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)
- _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)
- _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)
- _GDIPlus_GraphicsSetTextRenderingHint($hBuffer_Tip, 5)
- DllStructSetData($tSize, "X", $iWidth_Tip)
- DllStructSetData($tSize, "Y", $iHeight_Tip)
- DllStructSetData($tPoint, "X", $iX)
- DllStructSetData($tPoint, "Y", $iY)
- _GDIPlus_GraphicsFillRect($hBuffer_Tip, 0, 0, $iWidth_Tip, $iHeight_Tip, $hBrush_Hatch_Tip)
- EndSwitch
- _GDIPlus_GraphicsDrawStringEx($hBuffer_Tip, $sText_Tip, $hFont_Tip, $tLayout_Tip[0], $hFormat_Tip, $hBrush_Text_Tip)
- __ToolTip_ReDraw()
- If BitAND(WinGetState($hWnd_Tip), 2) <> 2 Then GUISetState(@SW_SHOWNOACTIVATE, $hWnd_Tip)
- GUIRegisterMsg($WM_PAINT, "__ToolTip_ReDraw")
- EndSwitch
- EndFunc ;==>_ToolTip_Create
- ; #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
- ; #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
- ; #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
- ; #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
- ; #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
- ; #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
- ; #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
- ; #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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement