So endlich ist meine erste richtige UDF fertig Klein aber fein
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
#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------------------------------------;
;==========Enthaltene Funktionen==========;
;=== 1. _GUIEffect_Create
;=== 2. _GUIEffect_ObjectGetHandle
;=== 3. _GUIEffect_Set
;=========================================;
;----------------------------------------------------------------------------------------------------------------------
; 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
Beispiel :
Spoiler anzeigen
;======================================================================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=========================================================================================================;
Hoffe sie gefällt euch Würde mich über Verbesserungsvorschläge und Ideen für Erweiterungen bzw. neue Funktionen freuen