GDI+ zeichnen auf GUI mit IEembedded-obj

  • Ich habe versucht auf ein GUI mit GDI+ ein Bild zu zeichen, jedoch wird es nicht angezeigt...
    Weiß jemand eine Lösung?
    Wenn ich den IEembedded teil auskommentier wird es ganz normal gezeichnet. ?(
    Brauche HILFE...

  • Dachte das script wäre unerheblich weil es sich ja um ein generelles Problem handelt. aber naja hier:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <GDIPlus.au3>

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

    $Pfeil_R_Path=_CreateTmpFile("Pfeil_R","0x89504E470D0A1A0A0000000D49484452000000320000003C08060000002435E9C10000001974455874536F6674776172650041646F626520496D616765526561647971C9653C0000060B4944415478DAEC5A794C146714FF66670F5860E59688502A46949AA6A4898D86266DD3D4BF6CC434581188251EB15B4B0149A95A82B48AA656A154AB94508A460B7F9426266D6C7A988836D2C6563420866A0B423976977B8FD99DD9BE6F9819AE3D666516760D2FD9ECBC6F6677BFDFBCF77BD70E61B7DBD1932032F484C8229045205E12F974F5578FBF207F5BD59C3670F2D2EE397CFA656740A417D8283103B87D1E2C223900ECBA44F19EF3C9361B1D93B23EB109D6295863E065971294372D421EC8A9DD6A31539590AAC2F0C26F3FB7A15B373A0ACB6ADEAA04958697CDA7C9CE5B632A085E2C26EB271FBF7B290D0E15701DE93316494C4D75B87E7C7FC35A1E8452AD46A452894C4343EC39C3C0E8C58AE2EF5ECB2DDD7C0DBB18E76A3E197E098552AE9CD408B43429092902028495EE7FF4E7DA5B1E2DE16E26E1B379442E27A77D37A950A098356B10219B58B659E91575153F55C3214647CE158CD7802854F259FEAF0C0A42D1AB5609BAC9486D2A7DE762911460BCE65ACE4E044746A2B0B838411FD28F7D007CDA8A71CE653F0B52A284C7C7237578B8A0F7750F559F3AD8F812C7179994518BE05EB219EFB3EEB4569BEC3087846802039CDB0BC80F2EF6E8F66D643599D8A59E4EFDD96B57EE6E7871E3DA7E50AD5C349B131082F357F987BBEBB22023A7CA08A028089C21600FA2FC18A296CAA52BC8E52CF9BB5B5A1063B321DAC6C4FDD0F047350049E740D83C01434CEF10D9A21183501666565FA569669D14AE84491E9792E2F0DCB8C1807A5B5B055D13A63E517226F3301C9AB9EC6F1753343AF24759C9DE0BD95281702741C015CC195E46068DFB8F153464794A7E47AE451AC72D39BC12B572E5DCEB20B9EB02220C8058C6C7D1B85ECFEAFD3D436780FCDD7947D27E149BF91DFD820C9295600D4D4CCCBC44329C5F305F280084A5FB5F7DF5E9D2CB6F688B37DD049572C71747A623D102888C2459F2F3D6636826AAEBC14039972CDD9631324F9299B705D76231AB57B3E1190B65B1A5402F532626F3FB14102C81A1A128222141D0C7464C7BCBF2EA73DC91DF27870FA1B1B128243A5AD0077A87CB4F1EF87623369AB33DFBEC1405474B5570B0A043D95F5B7EA8F105677CF15920B8DC8F494E66CB7F2C90B8353D9D8672BF03C2E606E82AD91E86233FA485E7A06CDAEE7740B004683428323151D0AD946D835F02E1AB655EA03424FD8AECBC98474791AEA363B20055C96F38CAF23E0DC44651A8B7AD0DF115BA5C41FEF55155769D5F01C19BC720688AE2BC8B188F4D88C873D6A7F82C900170270BB8152FCB9E8AD8915BBAF9A65F0119EEE941A37D7D821E11ADC92F28DBF23D57053362C9BEA07F2AE269A4EEE143410F5912F8E5C18A37AB5D81F0392056B319F5B5B7B331968B507F1E3E9B5528A6ED7504845E107233CC04B9ADD6898DC9087DDC8AA8F738106E07118E3A4406C25C33DF258EF4F64AD2EAE2C19C2BE9BF7F5FE80E3972EF82EEB059EC68C811105A1DA4AA191932AEE3A387145314574006BBBAD0984E37D9F62E0B7D3BFFE8962B1C0851937A47AEC5947C91594792B2E6F97029A3C1800C9D9D93E3A050F5A9A24FD3CFBB23B798B9966403BA41DD589AABB9169E32E269231ED0719FB975FCEB1C3CAC32891BD0B9FE33D4CE119E8172E02B78AF452E46A64E84BC50F9CBFA415D479AB30BF0E6FF6B6D1540907259CFF2A72331B92DC8C329A333203C1851F3A4D3A75B67AD69B5C9E4E888C9ECA2FE407D406E7EEECB923B3E62D7BE92D77F478F31F75DB0CC8E3981B9C1CBD2D8D09D7947D2AE7A42EEF902E2F48EE2E884A394306888082E7BFF447ABDA7E49E378B582DB6598915E7099C2F84D18F5A79B9F8F38C6348D4C07A818040B46366929BED2D1886EF2D1E64E7BEBA530A105E752DE8ADA9A9E4EEBD778FADA5F815E82DF6243DBB7CF871229427514BB4FCDDD4347B519B8CC0EFEF1664540DE2FFDA29A311329F51381D1E159201BDC5750E0423C59DF38A45B8674C185580721F24D0C1A9E754818AA2439F6D6BC43482EB242B50BDF92C0A7DB466C737F05ECF3E5463A5639F793EFEFA76ED2B46CE0A92B60B5E03C25985C6CFA5949ECBBA03C777A6AC4B3FCCF376F2F3D6C6DD148DFE2B8B0F672E025904E25AFE176000FF585E8DA964093E0000000049454E44AE426082")

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

    _IEErrorHandlerRegister()

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

    $oIE = _IECreateEmbedded()
    $SinkObject = ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents2") ; Ereignisse den UDFs zuweisen, beginnend mit IEEvent_
    $hGUI=GUICreate("Autoit Forum", @DesktopWidth, @DesktopHeight,0,0,$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN + $WS_MAXIMIZE)
    $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, @DesktopWidth-10,@DesktopHeight-50)
    GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)

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

    GUISetState(@SW_SHOW)
    _IENavigate($oIE, "http://autoit.de")
    _GDIPlus_Startup ()

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

    ; Draw bitmap to GUI
    $hBitmap = _GDIPlus_BitmapCreateFromFile ($Pfeil_R_Path)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
    _GDIPlus_GraphicsDrawImage ($hGraphic, $hBitmap, @DesktopWidth/2,@DesktopHeight/2)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

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

    EndSelect

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

    WEnd

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_ImageDispose ($hBitmap)
    ;~ _WinAPI_DeleteObject ($hBMP)

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

    $SinkObject = 0 ; IE Eventzuweisung aufheben
    $oIE.Quit ; IE beenden
    $oIE = 0
    GUIDelete()
    ; Shut down GDI+ library
    _GDIPlus_ShutDown ()
    Exit

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

    Func _CreateTmpFile($sFileName, $sBin)
    Local $sFile = @TempDir & "\" & $sFileName
    Local $hFileOut = FileOpen($sFile, 18)
    FileWrite($hFileOut, Binary($sBin))
    FileClose($hFileOut)
    Return $sFile
    EndFunc ;==>_CreateTmpFile

    [/autoit]
  • Versuch es mal mit dieser Funktion von SEuBo.

    Spoiler anzeigen
    [autoit]

    Func GUICtrlCreatePng($hWnd, $sPath, $iX, $iY) ; SEuBo
    _GDIPlus_Startup()
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend, $hGUI
    Local $hImage = _GDIPlus_BitmapCreateFromFile($sPath), $iWidth = _GDIPlus_ImageGetWidth($hImage), $iHeight = _GDIPlus_ImageGetHeight($hImage)
    $hGUI = GUICreate("", $iWidth, $iHeight, $iX, $iY, 0x80000000, BitOR(0x40, 0x80000), $hWnd)
    $cLabel = GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight)
    GUICtrlSetBkColor(-1, -2)
    GUISetState(@SW_SHOWNOACTIVATE, $hGUI)
    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate("int X;int Y")
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iWidth)
    DllStructSetData($tSize, "Y", $iHeight)
    $tSource = DllStructCreate("int X;int Y")
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate("byte Op;byte Flags;byte Alpha;byte Format")
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    GUISwitch($hWnd)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    Return SetError(0,$hGUI,$cLabel)
    EndFunc ;==>GUICtrlCreatePng

    [/autoit]
  • Hallo mireko,

    das kann so nicht klappen ist meines Erachtens auch unsinnig. Was du versuchen kannst ist den Source der jeweiligen Seite anzupassen, z.B. mit

    [autoit]

    _IEDocInsertText

    [/autoit]

    habe aber selbst noch nicht damit gearbeitet,

    Frohes gutes neues Jahr autoBert