Kaum hab ich mein erstes Problem gelöst, kommt schon das nächste.
Wenn ich meine GUI minimiere, und dann wieder über die Taskbar öffne, ist nur noch mein Hintergrundbild da, alles andere ist weg.
Wie kann ich die GUI neu zeichnen lassen, wenn man sie über die Taskbar wieder sichtbar macht ?
Mit
GUIRegisterMsg(0x000F,"_gui")
[/autoit]
Wird meine GUI dauerhaft neu gezeichnet, das bringt mir nix..
Mit
GUISetOnEvent($GUI_EVENT_RESTORE, "_gui",$GUISUB)
GUISetOnEvent($GUI_EVENT_RESTORE, "_gui",$GUI)
passiert auch nix..
Hier mein Script:
[Spoiler]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
Opt("TrayMenuMode", 1 + 2)
FileInstall("logo.png", @TempDir & "\logo.png", 1)
FileInstall("Buttons/about.png", @TempDir & "\about.png", 1)
FileInstall("Buttons/cheats.png", @TempDir & "\cheats.png", 1)
FileInstall("Buttons/donate.png", @TempDir & "\donate.png", 1)
FileInstall("Buttons/findgames.png", @TempDir & "\findgames.png", 1)
FileInstall("Buttons/forum.png", @TempDir & "\forum.png", 1)
FileInstall("Buttons/forumlogin.png", @TempDir & "\forumlogin.png", 1)
FileInstall("Buttons/help.png", @TempDir & "\help.png", 1)
FileInstall("Buttons/helpthread.png", @TempDir & "\helpthread.png", 1)
FileInstall("Buttons/language.png", @TempDir & "\language.png", 1)
FileInstall("Buttons/modifications.png", @TempDir & "\modifications.png", 1)
FileInstall("Buttons/mods.png", @TempDir & "\mods.png", 1)
FileInstall("Buttons/open premium options.png", @TempDir & "\open premium options.png", 1)
FileInstall("Buttons/patchcheck.png", @TempDir & "\patchcheck.png", 1)
FileInstall("Buttons/play.png", @TempDir & "\play.png", 1)
FileInstall("Buttons/projects.png", @TempDir & "\projects.png", 1)
FileInstall("Buttons/trainer.png", @TempDir & "\trainer.png", 1)
FileInstall("Buttons/upgrade to premium.png", @TempDir & "\upgrade to premium.png", 1)
FileInstall("Buttons/visit homepage.png", @TempDir & "\visit homepage.png", 1)
fileinstall("reiter+exit+minimize/downloadsdark.png",@TempDir & "\downloadsdark.png",1)
fileinstall("reiter+exit+minimize/downloadswhite.png",@TempDir & "\downloadswhite.png",1)
fileinstall("reiter+exit+minimize/infosdark.png",@TempDir & "\infosdark.png",1)
fileinstall("reiter+exit+minimize/infoswhite.png",@TempDir & "\infoswhite.png",1)
fileinstall("reiter+exit+minimize/newsdark.png",@TempDir & "\newsdark.png",1)
fileinstall("reiter+exit+minimize/newswhite.png",@TempDir & "\newswhite.png",1)
fileinstall("reiter+exit+minimize/minimize.png",@TempDir & "\minimize.png",1)
fileinstall("reiter+exit+minimize/close.png",@TempDir & "\close.png",1)
Global $PNGSRCGUIBK = @TempDir & "\logo.png"
Global $show = False
Global Const $AC_SRC_ALPHA = 1
Global Const $PROCESS_SUSPEND_RESUME = 2048
Global Const $PROCESS_TERMINATE = 1
Global $tray1 = TrayCreateItem("Hide/Restore")
Global $tray2 = TrayCreateItem("Exit")
_gui()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Button1
_play()
Case $Button23
ENDE()
Case $Button22
_hr()
EndSwitch
$TMSG = TrayGetMsg()
switch $TMSG
case $tray1
_hr()
case $tray2
ENDE()
EndSwitch
WEnd
func _hr()
if $show = True then
WinSetState($GUI, "", @SW_MINIMIZE)
WinSetState($GUISUB, "", @SW_MINIMIZE)
$show = False
Else
GUISetState(@SW_SHOW, $GUI)
GUISetState(@SW_SHOW, $GUISUB)
$show = True
EndIf
EndFunc
func _gui()
guidelete()
Global $GUI = GUICreate("", 550, 700, -1, -1, $WS_POPUP, BitOR($WS_EX_CONTROLPARENT, $WS_EX_LAYERED))
_GDIPlus_Startup()
Global $HIMAGEGUIBK = _GDIPlus_ImageLoadFromFile($PNGSRCGUIBK)
SETBITMAP($GUI, $HIMAGEGUIBK, 255)
Global $GUISUB = GUICreate("", 550, 700, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $GUI)
GUISetBkColor(5789784)
_WinAPI_SetLayeredWindowAttributes($GUISUB, 5789784)
;gta sa
Global $Button1 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\play.png", 27, 173)
Global $Button2 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\patchcheck.png", 27, 209)
Global $Button3 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\helpthread.png", 27, 246)
Global $Button4 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\trainer.png", 27, 282)
Global $Button5 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\cheats.png", 27, 318)
Global $Button6 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\mods.png", 27, 354)
;options
Global $Button7 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\upgrade to premium.png", 27, 450)
Global $Button8 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\findgames.png", 27, 486)
Global $Button9 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\modifications.png", 27, 522)
Global $Button10 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\language.png", 27, 558)
Global $Button11 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\help.png", 27, 594)
Global $Button12 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\help.png", 27, 630)
;
Global $Button13 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\visit homepage.png", 27, 727)
Global $Button14 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\projects.png", 27, 763)
Global $Button15 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\about.png", 27, 799)
Global $Button16 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\forum.png", 27, 835)
Global $Button17 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\donate.png", 27, 871)
Global $Button18 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\help.png", 27, 907)
;reiter
Global $Button19 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\downloadswhite.png", 350,548)
Global $Button20 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\infosdark.png", 467,548)
Global $Button21 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\newsdark.png", 584,548)
;minimize+close
Global $Button22 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\minimize.png", 950,35)
Global $Button23 = _GuiCtrlCreatePic($GUISUB,@TempDir & "\close.png", 975,30)
GUISetState(@SW_SHOW, $GUI)
GUISetState(@SW_SHOW, $GUISUB)
$show = True
EndFunc
func _play()
msgbox(0,"","play gedrückt")
if IniRead(@TempDir &"\inferno.ini","gta","true","1") = 1 Then
$launcher = fileopendialog("Select GTA.exe","","*.exe",3)
Iniwrite(@TempDir &"\inferno.ini","gta","true","2")
iniwrite(@TempDir &"\inferno.ini","launcher","launcher",$launcher)
Else
$launcher = iniread(@TempDir &"\inferno.ini","launcher","launcher","1")
ShellExecute($launcher)
EndIf
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 ;==>SETBITMAP
Func ENDE()
GUIDelete()
GUIDelete()
Exit
EndFunc ;==>ENDE
Func _GuiCtrlCreatePic($gGui, $iPicture, $iX = 0, $iY = 0)
$gImage = _GDIPlus_ImageLoadFromFile($iPicture)
$gWidth = _GDIPlus_ImageGetWidth($gImage)
$gHeight = _GDIPlus_ImageGetHeight($gImage)
$iGui = GUICreate("", $gWidth, $gHeight, $iX, $iY, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gGui)
$iLabel = GUICtrlCreateLabel("", 0, 0, $gWidth, $gHeight)
GUISetBkColor(0, $iGui)
GUISetState(@SW_SHOW, $iGui)
SetTransparentBitmap($iGui, $gImage)
;~ Local $iReturn[6] = [0, SetError(0, $iGui, $iLabel), $iX, $iY, $gWidth, $gHeight]
[/autoit][autoit][/autoit][autoit]Return SetError(0, $iGui, $iLabel)
EndFunc
Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
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", 1)
_WinAPI_UpdateLayeredWindow($hGUI, 0, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetTransparentBitmap
(/Spoiler]