Hallo Leute,
Mich zwickt schon eine Weile das Problem mit der Aktualisierng meiner GUI.
Kurz zum Aufbau (nur die wichtigsten Punkte):
- INI READ
- VAR DECLARATION
- INCLUDES
- MAIN GUI
- OPTIONS GUI
- WORKAROUND
Problem 1:
Spoiler anzeigen
In der Main Gui rufe ich unter anderem PNG-Grafiken auf
#Region ### MAIN GUI - LOAD PNG ###
_GDIPlus_Startup()
$hImage_Winamp = _GDIPlus_ImageLoadFromFile("images\winamp001.png")
$hImage_News = _GDIPlus_ImageLoadFromFile("images\news001.png")
$hImage_Wetter = _GDIPlus_ImageLoadFromFile("images\wetter001.png")
$hImage_Musik = _GDIPlus_ImageLoadFromFile("images\musik001.png")
$hImage_Kino = _GDIPlus_ImageLoadFromFile("images\kino001.png")
$hImage_Sport = _GDIPlus_ImageLoadFromFile("images\sport001.png")
$hImage_Horoskop = _GDIPlus_ImageLoadFromFile("images\horoskop001.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGuiMain)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
#EndRegion ### MAIN GUI - LOAD PNG ###
und gebe diese Recourcen nach dem Workaround, vor dem Exit wieder frei
Spoiler anzeigen
#Region ### FREE RECOURCES ###
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage_Winamp)
_GDIPlus_ImageDispose($hImage_News)
_GDIPlus_ImageDispose($hImage_Wetter)
_GDIPlus_ImageDispose($hImage_Musik)
_GDIPlus_ImageDispose($hImage_Kino)
_GDIPlus_ImageDispose($hImage_Sport)
_GDIPlus_ImageDispose($hImage_Horoskop)
_GDIPlus_Shutdown()
FileDelete("temp\*.*")
#EndRegion ### FREE RECOURCES ###
Jetzt habe ich aber das Problem, dass bei jeder Aktion im GUI (Aufruf eines MenuItems, Klick eines Buttons usw.) die PNG-Grafiken neu über die alten geladen werden. Was zum Beispiel bei Schatten das Problem birgt, dass diese mit der Zeit zu unschönen schwarzen Klecksen verkommen, auch werden die Grafiken mit der Zeit an den Rändern dadurch unscharf. Das heißt es wird bei jeder Aktion über das alte PNG ein neues gelegt. Ich finde aber keine Möglichkeit das zu unterbinden.
Problem 2:
Hängt ebenfalls mit der aktualisierung der GUI zusammen.
Mein Script soll über "AdlibRegister" nun ca. alle 60 Sekunden eine Funktion aufrufen, die die Verbindung zu einem FTP-Server testet und entweder "true" oder "false" zurück gibt. Aufgrund dieses Wertes, sollen zum einen bei "False" die Buttons im Script deaktiviert werden und in der Statusbar "Nicht Verbunden" angezeigt werden. Im Umkehrschluß sollben bei "True" dann wieder die Buttons aktiviert werden und in der Statusbar "Verbunden" stehen.
Doch auch hier hänge ich mit der aktualisierung des GUI's. Zwar bekomme ich den richtigen Wert zurück, aber das GUI reagiert nicht auf die Änderungen.