Ich beginne hiermit mit einer sogenannten WinFX udf, heißt visuelle Effekte für Windows bzw. GUIs.
Ich starte mit WinFX_ResizeWindow: eines Fensters Größe "animiert" ändern:
Spoiler anzeigen
Func _WinFX_ResizeWindow($sWindow,$width, $height,$step=5)
$sTitle=WinGetTitle($sWindow)
$sText=WinGetText($sWindow)
$hHandle=WinGetHandle($sWindow)
$pos=WinGetPos($sTitle)
If not IsArray($pos) Then return false
$oldwidth=$pos[2]
$oldheight=$pos[3]
$oldx=$pos[0]
$oldy=$pos[1]
$wdiff=$width-$oldwidth
$hdiff=$height-$oldheight
$j=0
$i=0
$wStep=$step
$hStep=$step
If $wdiff < 0 then $wStep = - $wStep
If $hdiff < 0 then $hStep = - $hStep
while Abs($i) <= Abs($wdiff) Or Abs($j) <= Abs($hdiff)
If Abs($i) <= Abs($wdiff) Then $i += $wStep
If Abs($j) <= Abs($hdiff) Then $j += $hStep
MsgBox(0,"","newwidth=" & $oldwidth+$i & @CRLF & "newheight=" & $oldheight+$j & @CRLF & "i=" & $i)
WinMove($sTitle,"",$oldx,$oldy,$oldwidth+$i,$oldheight+$j)
WEnd
Return $pos
EndFunc
Func _WinFX_FlashDesktop($iSpeed=3,$hColor=0xffffff)
;Remarks: Don't use AdLib with this
GUICreate("Flash",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
GUISetBkColor($hColor)
WinSetTrans("Flash","",240)
GUISetState()
For $i=100 To 255 step 5
WinSetTrans("Flash","",$i)
Next
For $i=255 To 0 step -$iSpeed
WinSetTrans("Flash","",$i)
Next
if not @error then return true
EndFunc
Func _WinFX_CloseDesktop($iSleep=1000)
$guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
$guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
GUISetBkColor(0x000000,$guieins)
GUISetBkColor(0x000000,$guizwei)
GUISetState(@SW_SHOW,$guieins)
GUISetState(@SW_SHOW,$guizwei)
For $i=1 To @DesktopHeight
WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
Next
sleep($iSleep)
GUIDelete($guieins)
GUIDelete($guizwei)
EndFunc
Func _WinFX_OpenDesktop($iSleep=1000)
$guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
$guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
GUISetBkColor(0x000000,$guieins)
GUISetBkColor(0x000000,$guizwei)
GUISetState(@SW_SHOW,$guieins)
GUISetState(@SW_SHOW,$guizwei)
For $i=@DesktopHeight to 1 step -1
WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
Next
sleep($iSleep)
GUIDelete($guieins)
GUIDelete($guizwei)
EndFunc
;EXAMPLE
$old=_WinFX_ResizeWindow("""WinFX",500,500,20)
$old=_WinFX_ResizeWindow("""WinFX",$old[2],$old[3],20)
_WinFX_CloseDesktop()
sleep(1000)
_WinFX_OpenDesktop()
sleep(1000)
_WinFX_FlashDesktop(1)