Bitte um HILFE bei PNG Anzeige mit GDI+

  • Hi,
    ich bin, das muss ich gestehen ein bisserl was NEU, wenn es um AutoIT geht, um ganz genau zu sein es geht um mein allererstes Script
    Prinzipiell geht es darum, dass ich in einer GUI Daten eingebe und diese dann in einer zweiten GUI als Voransicht anzeigen lassen will.

    Nun verzweifle ich grade daran, dass ich in der zweiten GUI eine png brauche (einen iPhone Screenshot um genau zu sein)
    Aber, irgendwie will das nicht funktionieren

    Die Funktionen die die PNG betreffen sehen so aus:

    [autoit]

    FUNC Preview()
    ; GUI erstellen
    $Preview = GUICreate("Preview", 747, 541, 354, 210)
    $app_t = GUICtrlCreateLabel($app_name, 0, 0, 746, 29, $SS_CENTER)
    $app_i = GUICtrlCreatePic($app_image, 0, 32, 320, 480, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $app_d = GUICtrlCreateLabel($app_desc, 325, 32, 454, 487)
    $app_l = GUICtrlCreateLabel($app_name, 0, 522, 746, 18, $SS_RIGHT)
    ; PNG Bild laden
    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile("MAIN.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Preview)

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

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()

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

    ; Führe die GUI aus bis sie geschlossen wird
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ; PNG Ressourcen aufräumen
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    ; ENDE PNG
    GUIDelete()
    ;ShowInput()
    EndSwitch
    WEnd
    EndFunc
    ; PNG Bild zeichnen
    Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($Preview, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 32)
    _WinAPI_RedrawWindow($Preview, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT

    [/autoit]

    Und Wenn ich Preview() aufrufe nach Scriptstart (ob mit gefüllten oder ohne gefüllten variablen ist dabei egal) funktioniert das auch tadellos.

    Sobald aber $Preview die ZWEITE geladene GUI ist, ist das png weg, wie man an dem Quellcode sieht,
    hab ich die png testweise schon festgesetzt auf eine vorhandene Datei um einen Fehler in der variablen zu umgehen.

    Die Frage also ist: Wieso funktioniert das nicht, wenn ich eine andere GUI zuerst lade?

    Danke schonmal für Eure Hilfe

    'sid

    Einmal editiert, zuletzt von itsid (19. Mai 2010 um 03:42)

  • Entschuldigt, jetzt wo ich nochmal eine "erste" gui (abgespeckt) basteln wollte um Euch den Fehler zu zeigen fiel mir auf, dass ich in der ersten GUI ein vordefiniertes BIld hatte,
    das eben NICHT besagte MAIN.png ist, irgendwie haben sich die beiden Bilder dann in die Haare bekommen, lass ich es weg oder tausche die main.png mit dem eigentlichen Bild (der variablen) klappt es natürlich doch.

    Also Kommando zurück, der Neuling hat nur die Geduld verloren bevor er die Antwort kannte


    'tschuldigung ;)

  • Ich mag alt sein, aber welche Prefixe sich anboten war mir noch in Erinnerung, also dachte ich: "Wo sie schonmal da sind...."
    Mir schien sie seien dazu vorgesehen, lag ich da etwa falsch?!

    "AutoIT" ist die schreibweise die herauskommt wenn der linke kleine Finger (vermutlich auch aufgrund des Alters des Inhabers)
    sich wegen einer suboptimalen Latenzzeit zu spät von der Umschalttaste löst und aufgrund dessen ein weiterer Buchstabe vergrössert,
    wenn der Betroffene (das wäre also in dem Fall ich) "AutoIt" tippen will um sich der Schreibweise des Forums zu bedienen.

    Sollte die Frage rhetorisch gewesen sein, im Sinne eines running gags vielleicht, ziehe ich die Antwort natürlich zurück ;)

    'sid