egal ...
WinMove auf Mausposition zieht zuerst weg ..
-
- [ offen ]
-
Julien -
19. Februar 2012 um 18:47 -
Geschlossen -
Erledigt
-
-
Probiere es mal damit:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#cs ----------------------------------------------------------------------------AutoIt Version: 3.3.8.0
[/autoit] [autoit][/autoit] [autoit]
Author: myNameScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include "GUICreateTransparent.au3"
#Include <Misc.au3>
Global Const $SC_DRAGMOVE = 0xF012
$hGUI = _GUICreate_Transparent(@ScriptDir & "\UglyBird.png",300,200)
$hChild = GUICreate("Form1", 321, 347, 124, 142,$WS_POPUP,$WS_EX_LAYERED+$WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0x000000,$hChild)
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hChild)
_WinAPI_SetLayeredWindowAttributes($hChild, 0x123456, 0xff)
WinSetOnTop($hChild, "", 0)
$dll = DllOpen("user32.dll")GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
;~ _CheckMove()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
DllClose($dll)
GUIRegisterMsg($WM_LBUTTONDOWN, "")
Exit
EndSwitch
WEndFunc _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndFunc ;==>_WM_LBUTTONDOWNFunc _CheckMove()
[/autoit]
If _IsPressed("01", $dll) Then
sleep(20)
$Pos = MouseGetPos()
WinMove($hChild,"",$Pos[0] + 124,$Pos[1] + 142) ; + 124 , weil Left von $hGUI 123 weniger ist als bei $hChild, + 142, wegen Top
WinMove($hGUI,"",$Pos[0],$Pos[1])
EndIf
EndFuncGruß,
UEZ -
Danke für die schnelle Antwort.
Ich möchte es jedoch gerne ohne diesen GUIRegisterMsg haben, da es sonst Probleme beim Verändern der Position für mich gibt.
Hättest du vielleicht eine Idee, wie dies mit _IsPressed realisierbar wäre?
Mfg, Julien
-
Sowas?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#cs ----------------------------------------------------------------------------AutoIt Version: 3.3.8.0
[/autoit] [autoit][/autoit] [autoit]
Author: myNameScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include "GUICreateTransparent.au3"
#Include <Misc.au3>
$iGW = 300
$iGH= 200
$hGUI = _GUICreate_Transparent(@ScriptDir & "\UglyBird.png",$iGW,$iGH)
$iW = 321
$iH = 347
$iPosX=124
$iPosY=142
$hChild = GUICreate("Form1", $iW, $iH, $iPosX,$iPosY,$WS_POPUP,$WS_EX_LAYERED+$WS_EX_MDICHILD, $hGUI)
GUISetBkColor(0x000000,$hChild)
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hChild)
_WinAPI_SetLayeredWindowAttributes($hChild, 0x123456, 0xff)
WinSetOnTop($hChild, "", 0)
$dll = DllOpen("user32.dll")While 1
[/autoit] [autoit][/autoit] [autoit]
_CheckMove()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
DllClose($dll)
GUIRegisterMsg($WM_LBUTTONDOWN, "")
Exit
EndSwitch
WEndFunc _CheckMove()
[/autoit]
If _IsPressed("01", $dll) Then
sleep(20)
$Pos = MouseGetPos()
WinMove($hGUI,"",$Pos[0]-$iW/2-$iPosX, $Pos[1]-$iH/2-$iPosY) ; + 124 , weil Left von $hGUI 123 weniger ist als bei $hChild, + 142, wegen Top
;~ WinMove($hGUI,"",$Pos[0]-$aPosWin[0],$Pos[1]-$aPosWin[1])
EndIf
EndFuncGruß,
UEZ -
Genau das meinte ich.
Danke dir

-
Tut mir leid, hat sich doch noch nicht erledigt.
Ich möchte es ohne dieses MDI Child haben.
Ich habe hier es noch einmal die Differenz von x und y vorher und nachher errechnet, vielleicht weißt du nun, was ich meine.
*egal