sobald ich meine GUI minimiere...
[autoit]WinSetState($Form1, "", @SW_MINIMIZE)
[/autoit]
... und dann wieder durch klick in die taskleiste maximiere, ist es verschwunden
wieso ? und wie bekomme ich diesen bug am besten gefixt ?
sobald ich meine GUI minimiere...
[autoit]WinSetState($Form1, "", @SW_MINIMIZE)
[/autoit]
... und dann wieder durch klick in die taskleiste maximiere, ist es verschwunden
wieso ? und wie bekomme ich diesen bug am besten gefixt ?
Hallo.
Poste doch mal den ganzen bzw. etwas mehr von deinem Source Code.
Ich habe versucht, deine Situation nachzustellen, jedoch gibt es bei mir keinen Bug, das Bild wird
normal angezeigt.
MfG. PrideRage
Mit _GDIPlus? Musst du wieder aufmalen. Ich bin kein GDI+ Profi aber versuchs mal mit:
[autoit]_WinAPI_RedrawWindow($hWnd [, $tRect = 0 [, $hRegion = 0 [, $iFlags = 5]]])
[/autoit]Hallo.
Poste doch mal den ganzen bzw. etwas mehr von deinem Source Code.
Ich habe versucht, deine Situation nachzustellen, jedoch gibt es bei mir keinen Bug, das Bild wird
normal angezeigt.
MfG. PrideRage
also ich hab in einem anderen topic das beispiel gepostet schau mal da bitte: Hier klicken
drawWindow($hWnd [, $tRect = 0 [, $hRegion = 0 [, $iFlags = 5]]])
Mit _GDIPlus? Musst du wieder aufmalen. Ich bin kein GDI+ Profi aber versuchs mal mit:
[autoit]_WinAPI_RedrawWindow($hWnd [, $tRect = 0 [, $hRegion = 0 [, $iFlags = 5]]])
[/autoit]
ich bin auch abslolut neu bei GDI+ ... mag sein das deine funktion/zeile geht, die frage ist jedoch wann ich sie aufrufe... ich kann sie ja nicht ständig in die schleife binden, kostet sicher viel cpu-power oder?
Gib einfach mal deinen Aktuellen Code dann Helfe ich dir.
Ich zitiere mal aus meinem GDI+ Tut:
ZitatAlles anzeigenMinimiert man das Fenster, oder verschiebt man es aus dem Desktopbereich, zieht man
ein anderes Fenster drüber, oder macht sonst etwas, was Windows dazu bewegt, unser GUI neu
zu zeichnen, ist das Quadrat weg. Für immer. Da kann man nichts machen.Ende des Tutorials.
Natürlich kann man da was machen. Und zwar müssen wir die Windows Nachricht abfangen,
[autoit]
die unser GUI dazu bewegt sich neu zu zeichnen. Klingt kompliziert, ist aber wirklich einfach.GUIRegisterMsg(0x000F,"WM_PAINT")
[/autoit]Dazu brauchen wir dann noch eine Funktion namens WM_PAINT, in der wir einfach nur das
Quadrat zeichnen.
In deinem Fall musst du natürlich statt dem Quadrat zu zeichnen, dein Bild zeichnen.
Gib einfach mal deinen Aktuellen Code dann Helfe ich dir.
nett von dir
da ist noch ein weiteres problem drinnen, denn ich woll meine png ursprünglich als button nutzen über die funktion, das ist mir leider nicht gelungen... wenn du magst kannst du ja mal schau, sonst einfach die case anweisung entfernen.
;----- example 3 PNG work araund by Zedna
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
Global $pngname1, $pngimagename
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hGUI999 = GUICreate("Show PNG", 250, 250)
GUISetState()
_drawpng($hGUI999, "blankavatar.png", $pngname1, 15, 100)
[/autoit] [autoit][/autoit] [autoit]; Loop until user exits
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $pngname1
ShellExecute("http://www.test.de")
EndSwitch
WEnd
Func _drawpng($pnggui,$pngpic, $pngx, $pngimagename, $pngy)
Local $hGraphic999
; Load PNG image
_GDIPlus_StartUp()
$pngimagename = _GDIPlus_ImageLoadFromFile($pngpic)
$hGraphic999 = _GDIPlus_GraphicsCreateFromHWND($pnggui)
; Draw PNG image
_WinAPI_RedrawWindow($pnggui, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGraphic999, $pngimagename, $pngx, $pngy)
_WinAPI_RedrawWindow($pnggui, 0, 0, $RDW_VALIDATE)
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic999)
_GDIPlus_ImageDispose($pngimagename)
_GDIPlus_ShutDown()
EndFunc
;----- example 3 PNG work araund by Zedna
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
Opt("GUIOnEventMode", 1)
$PngPath = "blankavatar.png"
_GDIPlus_Startup()
$hGUI = GUICreate("Show PNG", 250, 250)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hImg = _GDIPlus_ImageLoadFromFile($PngPath)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImg, 15, 100)
GUIRegisterMsg($WM_PAINT, "WM_PAINT")
GUISetOnEvent($GUI_EVENT_RESTORE, "Redraw")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
;~ Case $pngname1
;~ ShellExecute("http://www.test.de")
EndSwitch
WEnd
_GDIPlus_ImageDispose($hImg)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Func Redraw()
WM_PAINT(0, 0, 0, 0)
EndFunc ;==>Redraw
Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImg, 15, 100)
EndFunc ;==>WM_PAINT
Was soll eigentlich immer diese 999 hinter den Variablen.
Aber eigentlich würde hier eigentlich ein Image Control reichen.
Zitatda ist noch ein weiteres problem drinnen, denn ich woll meine png ursprünglich als button nutzen
danke für die hilfe ... was würde ich nur ohne euch machen.
obwohl ich ehrlich gesagt ganz schön am kotzen bin, denn wenn man bedenkt, dass ich einfach nur ein png in meine gui laden will und jetzt so weit ausholen muss ... mal ganz davon abgesehen, dass ich gehofft hatte alles in eine funktion packen zu können, der ich dann nurnoch parameter übergebe. ....denn ich verwende es in einem script das z.Z. 3900 codezeilen hat und ohne funktionen ist das ding noch unübersichtlicher als eh schon.