Hallo Leute
wollte eine PNG in meiner GUI einbauen, jedoch sie wird nicht angezeigt...
Hab natürlich schon die Forumsuche verwendet, hat mir aber auch nicht weitergeholfen
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
$_FILE_IMG_Logo_Small = @ScriptDir & "\res\img\logo_small.png"
$hGui = GUICreate ( "test", 800, 500, -1, -1)
_GUICtrlPngCreate($_FILE_IMG_Logo_Small,100,100,70,16)
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func _GUICtrlPngCreate($File,$Left,$Top,$Width,$Height)
$hPic = GUICtrlCreatePic ('',$Left,$Top,$Width,$Height)
_SetIconAlpha($hPic, $File,0, $Width, $Height)
Return $hPic
EndFunc
Func _SetIconAlpha($hWnd, $sIcon, $iIndex, $iWidth, $iHeight)
If Not IsHWnd($hWnd) Then
$hWnd = GUICtrlGetHandle($hWnd)
If $hWnd = 0 Then
Return SetError(1, 0, 0)
EndIf
EndIf
Local $hIcon = __WinAPI_ShellExtractIcons($sIcon, $iIndex, $iWidth, $iHeight)
If $hIcon = 0 Then
Return SetError(1, 0, 0)
EndIf
Local $hBitmap, $hObj, $hDC, $hMem, $hSv
$hDC = _WinAPI_GetDC($hWnd)
$hMem = _WinAPI_CreateCompatibleDC($hDC)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
$hSv = _WinAPI_SelectObject($hMem, $hBitmap)
_WinAPI_DrawIconEx($hMem, 0, 0, $hIcon, $iWidth, $iHeight, 0, 0, 2)
_WinAPI_ReleaseDC($hWnd, $hDC)
_WinAPI_SelectObject($hMem, $hSv)
_WinAPI_DeleteDC($hMem)
_WinAPI_DestroyIcon($hIcon)
_WinAPI_DeleteObject(_SendMessage($hWnd, 0x0172, 0, 0))
_SendMessage($hWnd, 0x0172, 0, $hBitmap)
$hObj = _SendMessage($hWnd, 0x0173)
If $hObj <> $hBitmap Then
_WinAPI_DeleteObject($hBitmap)
EndIf
Return 1
EndFunc ;==>_SetIconAlpha
Func __WinAPI_ShellExtractIcons($sIcon, $iIndex, $iWidth, $iHeight)
Local $Ret = DllCall('shell32.dll', 'int', 'SHExtractIconsW', 'wstr', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr*', 0, 'ptr*', 0, 'int', 1, 'int', 0)
If (@error) Or ($Ret[0] = 0) Or ($Ret[5] = Ptr(0)) Then
Return SetError(1, 0, 0)
EndIf
Return $Ret[5]
EndFunc ;==>_WinAPI_ShellExtractIcons