Habe da ein kleines Problem, und zwar stürzt folgendes Programm, beim schließen ab
Spoiler anzeigen
;#NoTrayIcon
#AutoIt3Wrapper_UseUpx=n
#include <WinAPI.au3>
#include <GUIConstants.au3>
#include <GDIPlus.au3>
Opt("MustDeclareVars", 0)
Global Const $AC_SRC_ALPHA = 1
Global Const $ULW_ALPHA = 2
Dim $close, $pngSrc, $hImage, $width, $Height, $Gui, $ctrlGui, $close, $msg
_GDIPlus_Startup()
FileInstall("LaunchySkin.png",@TempDir&"/back.png")
$pngSrc = @TempDir&"/back.png"
;$pngSrc ="LaunchySkin.png"
$hImage = _GDIPlus_ImageLoadFromFile($pngSrc)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$GUI = GUICreate(" ", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
$ctrlGui = GUICreate("ctrl", $Width, $Height, 0, -20, $WS_POPUP, $WS_EX_MDICHILD);BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD))
SetBitmap($GUI, $hImage, 0)
;$ctrlGui = GUICreate("ControlGUI", $width, $height, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD))
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW, $gui)
GUISetState(@SW_SHOW, $ctrlGui)
WinSetOnTop($GUI, "", 1)
;_fade()
SetBitmap($GUI, $hImage, 255)
$close = GUICtrlCreateButton("", 322, 20,24,20)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
;_close()
Exit
Case $msg = $close
;_close()
Exit
EndSelect
WEnd
Func _fade($opt="in")
If $opt="in" Then
For $i = 0 To 255 Step 5
SetBitmap($GUI, $hImage, $i)
Sleep(5)
Next
SetBitmap($GUI, $hImage, 255)
ElseIf $opt="out" Then
For $i = 255 To 0 Step -5
SetBitmap($GUI, $hImage, $i)
Sleep(5)
Next
EndIf
EndFunc
Func _close()
GUIDelete($ctrlGui)
; _fade("out")
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
GUIDelete($Gui)
FileDelete(@TempDir&"/back.png")
EndFunc
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
If ($hWnd = $Gui) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc
Func SetBitmap($hGUI, $hImage, $iOpacity)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc
Hat irgendjemand eine Idee wo der Fehler liegt? Hab schon alles möglich ausprobiert...
Grüßle AlkoholiX