png ist nach Gui minimieren verschwunden :(

  • 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 ?

    Einmal editiert, zuletzt von WhiteLion (10. Juli 2010 um 15:02)

  • 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

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • 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]
  • 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?

  • Ich zitiere mal aus meinem GDI+ Tut:

    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.

    Spoiler anzeigen
    [autoit]


    ;----- example 3 PNG work araund by Zedna
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $pngname1, $pngimagename

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hGUI999 = GUICreate("Show PNG", 250, 250)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _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

    [/autoit] [autoit][/autoit] [autoit]

    Case $pngname1
    ShellExecute("http://www.test.de")
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _drawpng($pnggui,$pngpic, $pngx, $pngimagename, $pngy)
    Local $hGraphic999

    [/autoit] [autoit][/autoit] [autoit]

    ; Load PNG image
    _GDIPlus_StartUp()
    $pngimagename = _GDIPlus_ImageLoadFromFile($pngpic)
    $hGraphic999 = _GDIPlus_GraphicsCreateFromHWND($pnggui)

    [/autoit] [autoit][/autoit] [autoit]

    ; Draw PNG image
    _WinAPI_RedrawWindow($pnggui, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic999, $pngimagename, $pngx, $pngy)
    _WinAPI_RedrawWindow($pnggui, 0, 0, $RDW_VALIDATE)

    [/autoit] [autoit][/autoit] [autoit]

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic999)
    _GDIPlus_ImageDispose($pngimagename)
    _GDIPlus_ShutDown()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Spoiler anzeigen
    [autoit]

    ;----- 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()

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hImg = _GDIPlus_ImageLoadFromFile($PngPath)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImg, 15, 100)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_ImageDispose($hImg)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func Redraw()
    WM_PAINT(0, 0, 0, 0)
    EndFunc ;==>Redraw

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImg, 15, 100)
    EndFunc ;==>WM_PAINT

    [/autoit]

    Was soll eigentlich immer diese 999 hinter den Variablen.
    Aber eigentlich würde hier eigentlich ein Image Control reichen.

  • 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.