GuiEffect.au3

  • So endlich ist meine erste richtige UDF fertig :) Klein aber fein :P
    Name : GuiEffect.au3
    Damit lassen sich Effekte wie z.B. Farb - bzw. Größenänderungen während der Mauszeiger auf einem Objekt im GUI ist anwenden.
    Z.B. ein Label das sobald der Cursor darauf kommt grün wird und die Schriftgröße 20 annimmt.

    Funktionen :

    • _GUIEffect_Create
    • _GUIEffect_ObjectGetHandle
    • _GUIEffect_Set

    Nähere Infos gibts dazu in der UDF (auf Englisch)

    Version : 1.0.0

    UDF:

    Spoiler anzeigen
    [autoit]

    #include <WinApi.au3>
    ConsoleWrite("----------------------------------------------"&@CRLf&"----------------------------------------------"&@CRLF&"GuiEffect Ver : 1.0.0 by nof@ker"&@CRLf&"----------------------------------------------"&@CRLF&"----------------------------------------------")
    ;-----------------------MustDeclaredVars-----------------------;
    Dim $Show_Now[201]
    For $i = 1 to 200
    $Show_Now[$i] = False
    Next
    ;-----------------------END------------------------------------;

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

    ;==========Enthaltene Funktionen==========;
    ;=== 1. _GUIEffect_Create
    ;=== 2. _GUIEffect_ObjectGetHandle
    ;=== 3. _GUIEffect_Set
    ;=========================================;

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Function : _GUIEffect_Create
    ;
    ; Description : Creates an effect which can be used on a Label with _GUIEffect_Set
    ;
    ; Parameter : $Flag : 0 - Creates a size effect
    ; 1 - Creates a color effect
    ; $gColorFont : Size when Cursor is on the Object | Color when Cursor is on the Object
    ; $ReSizeColor : Size when Cursor isn´t on the Object | Color when Cursor isn´t on the Object
    ; Return : Can be used with _GUIEffect_Set
    ;
    ; Author : nof@ker
    ;----------------------------------------------------------------------------------------------------------------------
    Func _GUIEffect_Create($Flag , $gColorFont , $ReSizeColor)
    If $Flag = 0 Then
    If IsNumber($gColorFont) and IsNumber($ReSizeColor) Then
    Return "0|"&$gColorFont&"|"&$ReSizeColor
    Else
    SetError(@error,1)
    EndIf
    EndIf
    ;============================
    If $Flag = 1 Then
    Return "1|"&$gColorFont&"|"&$ReSizeColor
    EndIf
    EndFunc
    ;----------------------------------------------------------------------------------------------------------------------
    ; Function : _GUIEffect_ObjectGetHandle
    ;
    ; Description : handles a Control in a GUI which can be used with _GUIEffect_Set
    ;
    ; Parameter : $GHwnd_Name : Name of the GUI not the ControlID!
    ; $ControlID : ControlID of the GUI-Control [Label,Button]
    ;
    ; Return : Can be used with _GUIEffect_Set
    ;
    ; Author : nof@ker
    ;----------------------------------------------------------------------------------------------------------------------
    Func _GUIEffect_ObjectGetHandle($GHwnd_Name,$ControlID)
    $PosID = ControlGetPos($GHwnd_Name,"",$ControlID)
    $Window_Handle = WinGetHandle($GHwnd_Name,"")
    Return $PosID[0]&"|"&$PosID[1]&"|"&$PosID[2]&"|"&$PosID[3]&"|"&$ControlID&"|"&$Window_Handle
    EndFunc
    ;----------------------------------------------------------------------------------------------------------------------
    ; Function : _GUIEffect_Set
    ;
    ; Description : Activates an effect when the mouse cursor touches it
    ;
    ; Parameter : $Number_Show_Now : Number of the Effect first effect must have number 1 effect 2 must have Show Number 2
    ;
    ; $GObject : Object in a GUI which must be handled with _GUIEffect_ObjectGetHandle
    ;
    ; $Effect : Effect which must be handled with _GUIEffect_Create
    ;
    ; Optional $Effect2 : Effect which must be handled with _GUIEffect_Create
    ;
    ; Usage : Size effect : Labels only
    ; Color effect : Labels,Buttons usw.
    ;
    ; Return : No Return
    ;
    ; Author : nof@ker
    ;----------------------------------------------------------------------------------------------------------------------
    Func _GUIEffect_Set($Number_Show_Now,$GObject,$Effect,$Effect2 = "")
    $GSplit1 = StringSplit($GObject,"|")
    $GSplit2 = StringSplit($Effect,"|")
    $GSplit3 = StringSplit($Effect2,"|")
    $GLeft = $GSplit1[1]
    $GTop = $GSplit1[2]
    $GWidth = $GSplit1[3]
    $GHeight = $GSplit1[4]
    $ControlID = $GSplit1[5]
    If IsArray($GSplit1) and IsArray($GSplit2) and $Show_Now[$Number_Show_Now] = False Then
    $G_MousePos = _WinAPI_GetMousePosX(True,$GSplit1[6])
    $G_MousePos2 = _WinAPI_GetMousePosY(True,$GSplit1[6])
    If $G_MousePos >= $GLeft and $G_MousePos <= $GLeft + $GWidth and $G_MousePos2 >= $GTop and $G_MousePos2 <= $GTop + $GHeight Then
    If $GSplit2[1] = "0" Then
    GUICtrlSetFont($GSplit1[5],$GSplit2[2])
    $Show_Now[$Number_Show_Now] = True
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    Else
    GUICtrlSetColor($GSplit1[5],$GSplit2[2])
    $Show_Now[$Number_Show_Now] = True
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    EndIf
    If $Effect2 <> "" Then
    If $GSplit3[1] = "0" Then
    GUICtrlSetFont($GSplit1[5],$GSplit3[2])
    $Show_Now[$Number_Show_Now] = True
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    Else
    GUICtrlSetColor($GSplit1[5],$GSplit3[2])
    $Show_Now[$Number_Show_Now] = True
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    If IsArray($GSplit1) and IsArray($GSplit2) and $Show_Now[$Number_Show_Now] = True Then
    $G_MousePos = _WinAPI_GetMousePosX(True,$GSplit1[6])
    $G_MousePos2 = _WinAPI_GetMousePosY(True,$GSplit1[6])
    $InVar = False
    If $G_MousePos >= $GLeft and $G_MousePos <= $GLeft + $GWidth and $G_MousePos2 >= $GTop and $G_MousePos2 <= $GTop + $GHeight Then
    $InVar = True
    EndIf
    If $InVar = False Then
    If $GSplit2[1] = "0" Then
    GUICtrlSetFont($GSplit1[5],$GSplit2[3])
    $Show_Now[$Number_Show_Now] = False
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    Else
    GUICtrlSetColor($GSplit1[5],$GSplit2[3])
    $Show_Now[$Number_Show_Now] = False
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    EndIf
    If $Effect2 <> "" Then
    If $GSplit3[1] = "0" Then
    GUICtrlSetFont($GSplit1[5],$GSplit3[3])
    $Show_Now[$Number_Show_Now] = False
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    Else
    GUICtrlSetColor($GSplit1[5],$GSplit3[3])
    $Show_Now[$Number_Show_Now] = False
    If @error Then
    SetError(@error,4)
    ConsoleWrite("nostartup")
    Exit
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Beispiel :

    Spoiler anzeigen
    [autoit]

    ;======================================================================BEISPIEL================================================================================;
    $GUI = GUICreate("GuiEffect.au3",400,500)
    GUISetState()
    $Label = GUICtrlCreateLabel("Zwei Effekte",20,20,160,30)
    GUICtrlSetFont(-1,10)
    $Label2 = GUICtrlCreateLabel("Farb Effekt",20,150,100,30)
    GUICtrlSetFont(-1,10)
    $Label3 = GUICtrlCreateLabel("Größen-Effekt",20,300,200,30)
    GUICtrlSetFont(-1,10)
    $Button = GUICtrlCreateButton("Button-Effekt",20,450,150,25)
    GUICtrlSetColor(-1,0x000000)
    ;==========VARIABLEN==================================================;
    Global $Effect = _GUIEffect_Create(1,0x00FF00,0x000000)
    Global $Effect2 = _GUIEffect_Create(0,20,10)
    Global $Effect3 = _GUIEffect_Create(1,0xFF0000,0x000000)
    Global $Effect4 = _GUIEffect_Create(1,0xFFF000,0x000000)
    Global $Object = _GUIEffect_ObjectGetHandle("GuiEffect.au3",$Label)
    Global $Object2 = _GUIEffect_ObjectGetHandle("GuiEffect.au3",$Label2)
    Global $Object3 = _GUIEffect_ObjectGetHandle("GuiEffect.au3",$Label3)
    Global $Object4 = _GUIEffect_ObjectGetHandle("GuiEffect.au3",$Button)
    ;==========ENDE=======================================================;
    While 1
    _GUIEffect_Set(1,$Object,$Effect,$Effect2)
    _GUIEffect_Set(2,$Object2,$Effect3)
    _GUIEffect_Set(3,$Object3,$Effect2)
    _GUIEffect_Set(4,$Object4,$Effect4)
    $msg = GUIGetMsg()
    Select
    Case $msg = -3
    Exit
    EndSelect
    WEnd
    ;========================================BEISPIEL ENDE=========================================================================================================;

    [/autoit]

    Hoffe sie gefällt euch :) :thumbup: Würde mich über Verbesserungsvorschläge und Ideen für Erweiterungen bzw. neue Funktionen freuen :)