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...
GDI+ zeichnen auf GUI mit IEembedded-obj
-
- [ offen ]
-
mireko -
2. Januar 2011 um 01:49 -
Geschlossen -
Erledigt
-
-
Poste doch erstmal dein Skript.
-
Dachte das script wäre unerheblich weil es sich ja um ein generelles Problem handelt. aber naja hier:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [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>$Pfeil_R_Path=_CreateTmpFile("Pfeil_R","0x89504E470D0A1A0A0000000D49484452000000320000003C08060000002435E9C10000001974455874536F6674776172650041646F626520496D616765526561647971C9653C0000060B4944415478DAEC5A794C146714FF66670F5860E59688502A46949AA6A4898D86266DD3D4BF6CC434581188251EB15B4B0149A95A82B48AA656A154AB94508A460B7F9426266D6C7A988836D2C6563420866A0B423976977B8FD99DD9BE6F9819AE3D666516760D2FD9ECBC6F6677BFDFBCF77BD70E61B7DBD1932032F484C8229045205E12F974F5578FBF207F5BD59C3670F2D2EE397CFA656740A417D8283103B87D1E2C223900ECBA44F19EF3C9361B1D93B23EB109D6295863E065971294372D421EC8A9DD6A31539590AAC2F0C26F3FB7A15B373A0ACB6ADEAA04958697CDA7C9CE5B632A085E2C26EB271FBF7B290D0E15701DE93316494C4D75B87E7C7FC35A1E8452AD46A452894C4343EC39C3C0E8C58AE2EF5ECB2DDD7C0DBB18E76A3E197E098552AE9CD408B43429092902028495EE7FF4E7DA5B1E2DE16E26E1B379442E27A77D37A950A098356B10219B58B659E91575153F55C3214647CE158CD7802854F259FEAF0C0A42D1AB5609BAC9486D2A7DE762911460BCE65ACE4E044746A2B0B838411FD28F7D007CDA8A71CE653F0B52A284C7C7237578B8A0F7750F559F3AD8F812C7179994518BE05EB219EFB3EEB4569BEC3087846802039CDB0BC80F2EF6E8F66D643599D8A59E4EFDD96B57EE6E7871E3DA7E50AD5C349B131082F357F987BBEBB22023A7CA08A028089C21600FA2FC18A296CAA52BC8E52CF9BB5B5A1063B321DAC6C4FDD0F047350049E740D83C01434CEF10D9A21183501666565FA569669D14AE84491E9792E2F0DCB8C1807A5B5B055D13A63E517226F3301C9AB9EC6F1753343AF24759C9DE0BD95281702741C015CC195E46068DFB8F153464794A7E47AE451AC72D39BC12B572E5DCEB20B9EB02220C8058C6C7D1B85ECFEAFD3D436780FCDD7947D27E149BF91DFD820C9295600D4D4CCCBC44329C5F305F280084A5FB5F7DF5E9D2CB6F688B37DD049572C71747A623D102888C2459F2F3D6636826AAEBC14039972CDD9631324F9299B705D76231AB57B3E1190B65B1A5402F532626F3FB14102C81A1A128222141D0C7464C7BCBF2EA73DC91DF27870FA1B1B128243A5AD0077A87CB4F1EF87623369AB33DFBEC1405474B5570B0A043D95F5B7EA8F105677CF15920B8DC8F494E66CB7F2C90B8353D9D8672BF03C2E606E82AD91E86233FA485E7A06CDAEE7740B004683428323151D0AD946D835F02E1AB655EA03424FD8AECBC98474791AEA363B20055C96F38CAF23E0DC44651A8B7AD0DF115BA5C41FEF55155769D5F01C19BC720688AE2BC8B188F4D88C873D6A7F82C900170270BB8152FCB9E8AD8915BBAF9A65F0119EEE941A37D7D821E11ADC92F28DBF23D57053362C9BEA07F2AE269A4EEE143410F5912F8E5C18A37AB5D81F0392056B319F5B5B7B331968B507F1E3E9B5528A6ED7504845E107233CC04B9ADD6898DC9087DDC8AA8F738106E07118E3A4406C25C33DF258EF4F64AD2EAE2C19C2BE9BF7F5FE80E3972EF82EEB059EC68C811105A1DA4AA191932AEE3A387145314574006BBBAD0984E37D9F62E0B7D3BFFE8962B1C0851937A47AEC5947C91594792B2E6F97029A3C1800C9D9D93E3A050F5A9A24FD3CFBB23B798B9966403BA41DD589AABB9169E32E269231ED0719FB975FCEB1C3CAC32891BD0B9FE33D4CE119E8172E02B78AF452E46A64E84BC50F9CBFA415D479AB30BF0E6FF6B6D1540907259CFF2A72331B92DC8C329A333203C1851F3A4D3A75B67AD69B5C9E4E888C9ECA2FE407D406E7EEECB923B3E62D7BE92D77F478F31F75DB0CC8E3981B9C1CBD2D8D09D7947D2AE7A42EEF902E2F48EE2E884A394306888082E7BFF447ABDA7E49E378B582DB6598915E7099C2F84D18F5A79B9F8F38C6348D4C07A818040B46366929BED2D1886EF2D1E64E7BEBA530A105E752DE8ADA9A9E4EEBD778FADA5F815E82DF6243DBB7CF871229427514BB4FCDDD4347B519B8CC0EFEF1664540DE2FFDA29A311329F51381D1E159201BDC5750E0423C59DF38A45B8674C185580721F24D0C1A9E754818AA2439F6D6BC43482EB242B50BDF92C0A7DB466C737F05ECF3E5463A5639F793EFEFA76ED2B46CE0A92B60B5E03C25985C6CFA5949ECBBA03C777A6AC4B3FCCF376F2F3D6C6DD148DFE2B8B0F672E025904E25AFE176000FF585E8DA964093E0000000049454E44AE426082")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_IEErrorHandlerRegister()
[/autoit] [autoit][/autoit] [autoit]$oIE = _IECreateEmbedded()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
_IENavigate($oIE, "http://autoit.de")
_GDIPlus_Startup (); Draw bitmap to GUI
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromFile ($Pfeil_R_Path)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
_GDIPlus_GraphicsDrawImage ($hGraphic, $hBitmap, @DesktopWidth/2,@DesktopHeight/2)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoopEndSelect
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]; Clean up resources
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose ($hGraphic)
_GDIPlus_ImageDispose ($hBitmap)
;~ _WinAPI_DeleteObject ($hBMP)$SinkObject = 0 ; IE Eventzuweisung aufheben
[/autoit] [autoit][/autoit] [autoit]
$oIE.Quit ; IE beenden
$oIE = 0
GUIDelete()
; Shut down GDI+ library
_GDIPlus_ShutDown ()
ExitFunc _CreateTmpFile($sFileName, $sBin)
[/autoit]
Local $sFile = @TempDir & "\" & $sFileName
Local $hFileOut = FileOpen($sFile, 18)
FileWrite($hFileOut, Binary($sBin))
FileClose($hFileOut)
Return $sFile
EndFunc ;==>_CreateTmpFile -
Versuch es mal mit dieser Funktion von SEuBo.
Spoiler anzeigen
[autoit]Func GUICtrlCreatePng($hWnd, $sPath, $iX, $iY) ; SEuBo
[/autoit]
_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 -
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