Erstens ist der Horizont von Autoit alles andere als grenzenlos.. Zweitens hab ich euch mal eure drag-Func gefixt.. finde es so einfacher zu bedienen!
Spoiler anzeigen
#Include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
Opt('MouseCoordMode', 0)
Opt("GUIOnEventMode", 1)
Global $Pos_M2 = MouseGetPos(), $pic
Dim $sPic[1]
$hGUI = GUICreate("Transparent", 575, 510, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_ACCEPTFILES)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
$insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_insert")
$delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_Delete")
$label = GUICtrlCreateLabel("Transparence = 0%", 30, 437, -1, 14)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
$slider = GUICtrlCreateSlider(10, 457, 144, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
GUICtrlCreatePic("", -10, -10)
Dim $Acc[2][2] = [["^i", $insert], ["^d", $delete]]
GUISetAccelerators($Acc)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")
While 1
sleep(10)
WEnd
Func _insert()
$bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
If $bild = "" Or @error Then return
GUICtrlCreatePic($bild, 150, 150)
GuiCtrlSetOnEvent(-1, "_DragMe")
EndFunc
Func _delete()
GuiCtrlDelete($pic)
EndFunc
Func _DragMe()
Global $hGui = @GUI_WINHANDLE
$pic = @GUI_CTRLID
Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
Local $dll = DllOpen("user32.dll")
$Pos_C = ControlGetPos($hGui, "", $pic)
$Pos_M = MouseGetPos()
$Pos_W = WinGetPos($hGui)
$x_Offset = $Pos_M[0] - $Pos_C[0]
$y_Offset = $Pos_M[1] - $Pos_C[1]
While _IsPressed('01', $dll)
$Pos_M = MouseGetPos()
If $Pos_M <> $Pos_M2 Then
GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
sleep(10)
EndIf
$Pos_M = $Pos_M2
sleep(50)
While _IsPressed('11', $dll)
$Pos_C = ControlGetPos($hGui, "", $pic)
_MouseTrap($Pos_C[0]+$Pos_W[0],$Pos_C[1]+$Pos_W[1],$Pos_W[2]+$Pos_W[0],$Pos_W[3]+$Pos_W[1])
$Pos_M = MouseGetPos()
GUICtrlSetPos($pic, $Pos_C[0], $Pos_C[1], $Pos_M[0]-$Pos_C[0], $Pos_M[1]-$Pos_C[1])
sleep(10)
WEnd
WEnd
DllClose($dll)
_MouseTrap()
EndFunc
Func WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
Local $hWndFrom, $iCode
If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
$hWndFrom = $lParam
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case $slider, $hWndCombo1
GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
EndSwitch
EndFunc
Func _Ex()
Exit
EndFUnc