Hallo,
mein Problem ist es, dass Bilder bei mir je nach OS und Build an verschiedenen Positionen angezeigt werden
Script:
Spoiler anzeigen
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Global $hGUI
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$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)
$hButton = _GUICtrlCreateImageButton($hGUI, "start.png", "start_hover.png", 750, 600)
While 1
_Funktion()
WEnd
Func _Funktion()
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
EndSwitch
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 _GUICtrlCreateImageButton($gui_parent, $image, $image_hover, $left, $top)
$hImage = _GDIPlus_ImageLoadFromFile($image)
$hImageHover = _GDIPlus_ImageLoadFromFile($image_hover)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$gui = GUICreate("Button_" & Random(1, 9999), $width, $height, $left, $top, $WS_POPUP, $WS_EX_LAYERED, $gui_parent)
GUISetCursor(0, 1, $gui)
$GUIActiveX = GUICtrlCreateLabel("", -1, -1, $width + 1, $height + 1)
GUICtrlSetCursor(-1, 0)
SetBitmap($gui, $hImage, 0xFF)
GUISetState(@SW_SHOW, $gui)
$handle = SetError(0, $gui, $gui);
Return $handle
EndFunc ;==>_GUICtrlCreateImageButton
So, wie man unten bei den Bildern sieht, ist bei win 7 (erstes Bild) das Start Bild weiter unten als bei win 8 (zweites Bild).
Beim Kumpel mit ner anderen win 7 Version ist das Start Bild noch weiter oben und links. Bei nem Kumpel mit win 8.1 ist das Start Bild unten und weiter rechts.
Woran liegt das? Und wie kann ich das lösen, ausser es an jedes OS und an jedes Build anzupassen?