AutoIt GDI+ Problem

  • Hallo erstmal, ich fange gerade mit GDI+ an und schon hab ich ein kleines Problem.
    Ich habe dieses Script geschrieben, um Ellipsen aus zu probieren, doch wenn ich das Fenster schließen will,
    kommt eine Fehlermeldung: AutoIt v3 Script funktioniert nicht mehr.
    Ich benutze Vista (vielleicht liegt es daran).

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstants.au3>

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

    Global $gui = GUICreate("GDI+",500,500,-1,-1)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $gdi_hwnd = _GDIPlus_GraphicsCreateFromHWND($gui)

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

    $pen = _GDIPlus_PenCreate(0xFF000000,5)

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

    _GDIPlus_GraphicsDrawEllipse($gdi_hwnd,100,100,100,100,$pen)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($gui)
    _GDIPlus_PenDispose($pen)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • [autoit]

    _GDIPlus_GraphicsDispose($gui)

    [/autoit]


    Du versuchst deine GUI aufzulösen ^^

    Du musst aber das gemalte Grafikobjekt löschen (aus dem Speicher)

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>

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

    Global $gui = GUICreate("GDI+", 500, 500, -1, -1)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $gdi_hwnd = _GDIPlus_GraphicsCreateFromHWND($gui)

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

    $pen = _GDIPlus_PenCreate(0xFF000000, 5)

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

    _GDIPlus_GraphicsDrawEllipse($gdi_hwnd, 100, 100, 100, 100, $pen)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($gdi_hwnd)
    _GDIPlus_PenDispose($pen)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    [/autoit]

    //EDIT: Hab das mal angepasst - die Version von Ahnungslos sieht irgendwie richtiger aus.

  • Du versuchst die Gui mit _GDIPlus_GraphicsDispose() zu killen, probiers mal so:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstants.au3>

    Global $gui = GUICreate("GDI+",500,500,-1,-1)
    GUISetState(@SW_SHOW)

    _GDIPlus_Startup()

    $gdi_hwnd = _GDIPlus_GraphicsCreateFromHWND($gui)

    $pen = _GDIPlus_PenCreate(0xFF000000,5)

    _GDIPlus_GraphicsDrawEllipse($gdi_hwnd,100,100,100,100,$pen)

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($gdi_hwnd) ;### Änderung ###
    _GDIPlus_PenDispose($pen)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    [/autoit]

    edit: zu langsam