Hallo,
ich bastle mir gerade eine schöne GUI und bin sogleich auf ein nerviges Problem gestoßen.
Egal welche Seite ich im IE Objekt anzeigen lasse wird der Scrollbalken angezeigt bzw. auch wenn er nicht aktiv ist. Dazu habe ich das IE Objekt in ein Child gelegt, sodass ich es problemlos auf meiner GUI platzieren kann. Da wird jedoch der untere und rechte Rand angezeigt und den bekomme ich leider auch nicht ausgeblendet.
Hier einfach mal der Code
Spoiler anzeigen
#RequireAdmin
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <Array.au3>
_GDIPlus_Startup()
$oPage = _IECreateEmbedded()
$hGUI = GUICreate("hans", 450, 610, (@DesktopWidth / 2) - 400, -1, $WS_POPUP, $WS_EX_LAYERED); + $WS_EX_TOPMOST)
$hGUI_child = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_MDICHILD, $hGUI)
$hImage = _GDIPlus_ImageLoadFromFile("bg.png")
SetBitmap($hGUI, $hImage, 0xFF)
GUISetBkColor(0, $hGUI_child)
GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI_child)
_WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)
_GUICtrlCreateIEObject(Default, $oPage, 500, 400, 0, 0, "http://fc09.deviantart.net/fs71/f/2011/323/3/8/autoit_icon_by_cacgolf-d4go7hg.png", 0)
[/autoit] [autoit][/autoit] [autoit]While 1
_Funktion()
WEnd
Func _Funktion()
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
EndSwitch
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_Funktion
[/autoit] [autoit][/autoit] [autoit]Func SetBitmap($hGUI, $hImage, $iOpacity = 255)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", 1)
_WinAPI_UpdateLayeredWindow($hGUI, $hGUI, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetBitmap
Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
_SendMessage($hGUI, $WM_SYSCOMMAND, 0xF012, 0)
EndFunc ;==>_WM_LBUTTONDOWN
Func _GUICtrlCreateIEObject($iGui, $iObject, $iWidth, $iHeight, $iLeft, $iTop, $iUrl = "", $iWait = 1)
$iIEGui = GUICreate("IE_" & Random(1, 100, 1), 0, 0, $iLeft, $iTop, BitOR($WS_CHILD, $WS_VISIBLE, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN), Default, $iGui)
$GUIActiveX = GUICtrlCreateObj($iObject, -2, -2, $iWidth, $iHeight)
GUICtrlSetResizing($GUIActiveX, $GUI_DOCKAUTO)
_IENavigate($iObject, $iUrl, $iWait)
GUISetState(@SW_SHOW, $iIEGui)
Return SetError(0, $iIEGui, $GUIActiveX)
EndFunc ;==>_GUICtrlCreateIEObject
Jemand ne Idee wie ich das lösen könnte?
Für generelle Vorschläge meines Codes bin ich auch offen
MfG Freaky