Hallo,
ich möchte eine Form machen mit schönen Bildern etc.
Das Problem ist, wenn ich ein Button als Bild darstelle mit GuiCtrlCreatePic hinbatsche, dann ist mein Hintergrundbild, dass mit GDI+ dargestellt wird, schwarz.
Nun habe ich es versuchen mit dem selben weg, wie ich das Hintergrundbild dargestellt habe, meine Buttons darzustellen.
Leider kommt das Bild irgend wo auf dem Desktop und nicht in der Gui obwohl ich ein Parent angegeben habe.
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
#include <IE.au3>
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
Global $iImagePfad = @ScriptDir & "\Bilder\", $i
_GDIPlus_StartUp()
$hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
$oIE=_IECreateEmbedded()
[/autoit] [autoit][/autoit] [autoit]; Create GUI
$hGUI = GUICreate("Test", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
$hGUI_child = GUICreate("", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0, $hGUI_child)
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI_child)
SetTransparentBitmap($hGUI, $hImage)
_WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)
GUICtrlCreateButton ("hallo",50,50,134,33)
_GuiCtrlCreatePic ($hGUI_child,$iImagePfad & "\start_1.png",100,100)
;~ GUICtrlCreatePic ($iImagePfad & "\start_1.jpg",50,50,143,33)
;~ GUICtrlCreateObj ($oIE,50,50,100,100)
;~ _IENavigate($oIE, 'http://google.de')
GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
[/autoit] [autoit][/autoit] [autoit]WinMove ($hGUI,"",(@DesktopWidth/2)-($iWidth/2),(@DesktopHeight/2)-($iHeight/2))
WinMove ($hGUI_child,"",(@DesktopWidth/2)-($iWidth/2),(@DesktopHeight/2)-($iHeight/2))
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ShutDown()
Exit
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, 1)
Return $GUI_RUNDEFMSG
EndFunc
Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndFunc ;==>_WM_LBUTTONDOWN
Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
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, 0, 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 _GuiCtrlCreatePic ($gGui, $iPicture, $iX = 0, $iY = 0)
$gImage = _GDIPlus_ImageLoadFromFile($iPicture)
$gWidth = _GDIPlus_ImageGetWidth($hImage)
$gHeight = _GDIPlus_ImageGetHeight($hImage)
$iGui = GUICreate ("",$gWidth,$gHeight,$iX,$iY, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST, $gGui)
GUISetBkColor(0, $iGui)
GUISetState(@SW_SHOW, $iGui)
SetTransparentBitmap($iGui, $gImage)
EndFunc
Bilder sind unten im Anhang.
Ich hoffe ihr könnt mir helfen
mfg Freaky
PS: Wenn ihr es rausgefunden habt, und mir bei meinem zweiten Problem helfen könnt, liest bitte den Spoiler.
Spoiler anzeigen
Ich habe ein IE Object ausgeklammert. Weiß einer wie ich eine Webseite ohne den IE Object Rand darstellen kann? Also als ob die Webseite zu der Form gehört?