Grafiken (GDIPlus) verschwinden beim Minimieren

  • Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=ccd.exe
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Res_Comment=BETA-Version
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstants.au3>
    #include <GUIListView.au3>
    #include <GUIStatusBar.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <String.au3>
    #include <File.au3>

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

    Local $sb_einteilung[2] = [100, 200], $last_clip, $warte_count, $warte, $filter[1]

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

    $g1 = GUICreate("CCD - Clip-Converter and -Downloader", 1024, 700, -1, -1, -1, $WS_EX_ACCEPTFILES)

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

    ...

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($g1)
    $i_top = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\ccd_interface_top_bg1.png")
    $i_los = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\ccd_interface_los.png")
    $a = _GDIPlus_GraphicsDrawImageRect($hGraphic, $i_top, 0, 0, 1024, 45)
    $a = _GDIPlus_GraphicsDrawImageRect($hGraphic, $i_los, 905, 618, 100, 50)

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

    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then
    FileDelete(@ScriptDir & "\liste.txt")
    _GDIPlus_ImageDispose($i_top)
    _GDIPlus_ImageDispose($i_los)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndIf

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

    WEnd

    [/autoit]

    Wie im Titel genannt, verschwinden die beiden Grafiken, sobald ich das Programm minimiere. Gibt es eine Möglichkeit dies zu verhindern?
    Die eine Grafik dient nur zur Zierde und könnte zur Not entfernt werden. Die andere Grafik dient lediglich als schönerer Button und kann definitiv ersetzt werden, wenn ich das Problem nicht in den Griff bekomme.

    Einmal editiert, zuletzt von _DICE_ (17. Februar 2011 um 20:01)

  • Hallo,

    hatte das gleiche Problem. Mit $GUI_EVENT_RESTORE und Neuzeichnen klappt es. Nicht ideal bei 9 größeren Png's, aber läuft.

    Nun habe ich allerdings noch das Problem, wenn ich die GUI an den Fensterrand ziehe so dass ein Teil nicht sicht bar ist verschwindet der nicht sichtbare Teil der PNG's und kehrt auch nicht zurück.

    Wie kann das gelöst werden?

    MfG Reinhard

  • OK,

    habe $GUI_EVENT_RESTORE rausgeschmissen und

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")

    ...

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($mtileGUI, 0, 0, $RDW_UPDATENOW)
    mapCanvasDraw()
    _WinAPI_RedrawWindow($mtileGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    eingefügt. Klappt jetzt alles.

    Würde allerdings - soweit möglich - für einfache Grafiken immer JPG anstelle PNG nehmen.

    MfG. Reinhard