Mathe/Berechnung?

  • Abend,

    ich komme gerade mal wieder nicht weiter bei einer kleinen Berechnung. Ich möchte nur, dass sich der Button verschieben lässt, das tut er auch, jedoch habe ich das Problem, dass er etwas wegzieht, wenn ich den Button anklicke, wie muss ich da nun was rechnen?

    Skript :

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    Opt("MouseCoordMode",0)
    $GUIGen = GUICreate("Beispielskript", 615, 438, 192, 124)
    $VButton = GUICtrlCreateButton("Julien", 296, 184, 72, 24)
    GUISetState(@SW_SHOW)
    $UserDll = DllOpen("user32.dll")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
    DllClose($UserDll)
    Exit
    EndIf
    $CursorState = GUIGetCursorInfo($GUIGen)
    If $CursorState[4] = $VButton And _IsPressed("01",$UserDll) Then
    $CursorState = GUIGetCursorInfo($GUIGen)
    sleep(1)
    GuiCtrlSetPos($VButton,$CursorState[0],$CursorState[1])
    EndIf
    WEnd

    [/autoit]

    MfG, Julien

    Einmal editiert, zuletzt von Julien (11. März 2012 um 13:37)

  • Ich würde es so machen. Ist vielleicht nicht die beste Lösung, aber was besseres ist mir nicht eingefallen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MouseCoordMode", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $OffsetX = -1, $OffsetY, $ButtonX = 300, $ButtonY = 180

    [/autoit] [autoit][/autoit] [autoit]

    $GUIGen = GUICreate("Beispielskript", 615, 438, 192, 124)
    $VButton = GUICtrlCreateButton("Julien", $ButtonX, $ButtonY, 72, 24)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $CursorState = GUIGetCursorInfo($GUIGen)

    [/autoit] [autoit][/autoit] [autoit]

    If $CursorState[4] = $VButton And $CursorState[2] Then
    $MoveButton = True
    ElseIf Not $CursorState[2] Then
    $MoveButton = False
    $OffsetX = -1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $MoveButton Then
    If $OffsetX = -1 Then
    $OffsetX = $CursorState[0] - $ButtonX
    $OffsetY = $CursorState[1] - $ButtonY
    EndIf
    $ButtonX = $CursorState[0] - $OffsetX
    $ButtonY = $CursorState[1] - $OffsetY
    GUICtrlSetPos($VButton, $ButtonX, $ButtonY)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit]


    Gruss Shadowiogor