GUI in GUI scollen durch Mausklick

  • Hallo,

    ich hab eine GUI geschrieben, wo da drinne noch eine GUI ist. Diese soll man durch einen einfachen Klick nach unten oder oben scrollen können. Leider ist das nicht passend zur Maus. Ich tüftle schon die ganzen Zeit damit rum und hab mir zur Hilfe Skizzen gemacht, aber ich krieg das nicht hin X(
    Bitte helft mir!

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIScrollbars.au3>
    #include <ScrollBarConstants.au3>
    #include <StaticConstants.au3>
    #include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Local $OldMove = 0

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

    $hGUI = GUICreate("Form1", 386, 386)
    GUISetBkColor(0xFFFFFF, $hGUI)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")

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

    $Button1 = GUICtrlCreateButton("Ok", 304, 352, 75, 25)
    GUICtrlSetOnEvent(-1, "_close")

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

    $hScrollGUI = GUICreate("", 369, 337, 8, 8, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0xFFFFFF, $hScrollGUI)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_Move")

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

    Local $ClientSize = WinGetClientSize($hScrollGUI)
    Local $Middle = ($ClientSize[0] / 2)

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

    _Schrift('Desktop Radio', 130, 0x005ACE, True)
    _Schrift('Version: 3.3.0.0', 145, 0x005ACE, False)
    _Schrift('Copyright © bla', 145, 0x005ACE, False)
    _Schrift('e-Mail: emaladdress@host.de', 170, 0x005ACE, False)
    GUICtrlCreateLabel("", 0 + 20, 200, $ClientSize[0] - 40, 2, -1, $WS_EX_STATICEDGE)

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

    _GUIScrollBars_Init($hScrollGUI)
    _GUIScrollBars_ShowScrollBar($hScrollGUI, $SB_HORZ, False)
    _GUIScrollBars_ShowScrollBar($hScrollGUI, $SB_VERT, False)

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

    GUISetState(@SW_SHOW, $hScrollGUI)
    GUISetState(@SW_SHOW, $hGUI)

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

    AdlibRegister("_auto", 100)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _auto()
    _GUIScrollBars_ScrollWindow($hScrollGUI, 0, -1)
    $OldMove =- 1
    EndFunc

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

    Func _Move()
    AdlibUnRegister("_auto")

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

    Local $Cursor1 = GUIGetCursorInfo($hScrollGUI)
    Local $Cursor2

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

    While _IsPressed("01")
    $Cursor2 = GUIGetCursorInfo($hScrollGUI)

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

    If ($Cursor2[1] - $Cursor1[1]) <> $OldMove Then
    ConsoleWrite(($Cursor2[1] - $Cursor1[1]) & @CRLF)
    _GUIScrollBars_ScrollWindow($hScrollGUI, 0, ($Cursor2[1] - $Cursor1[1]))
    $OldMove = ($Cursor2[1] - $Cursor1[1])
    EndIf
    WEnd
    AdlibRegister("_auto", 100)
    EndFunc

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

    Func _calc($vaule1, $vaule2)
    Return $vaule2 - $vaule1
    ;~ If $vaule1 < $vaule2 Then Return $vaule2 - $vaule1
    EndFunc

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

    Func _Schrift($Text, $YPos, $Farbe = 0x005ACE, $Fett = False)
    If $Fett Then
    Local $Bold = 800
    Else
    Local $Bold = 400
    EndIf

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

    GUICtrlCreateLabel($Text, 0, $YPos, $ClientSize[0], 17, $SS_CENTER)
    GUICtrlSetFont(-1, Default, $Bold , 0, "MS Sans Serif", 5)
    GUICtrlSetColor(-1, $Farbe)
    EndFunc

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

    Func _Close()
    Exit
    EndFunc

    [/autoit]
  • meinst du so?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIScrollbars.au3>
    #include <ScrollBarConstants.au3>
    #include <StaticConstants.au3>
    #include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Local $OldMove = 0

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

    $hGUI = GUICreate("Form1", 386, 386)
    GUISetBkColor(0xFFFFFF, $hGUI)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")

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

    $Button1 = GUICtrlCreateButton("Ok", 304, 352, 75, 25)
    GUICtrlSetOnEvent(-1, "_close")

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

    $hScrollGUI = GUICreate("", 369, 337, 8, 8, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0xFFFFFF, $hScrollGUI)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_Move")

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

    Local $ClientSize = WinGetClientSize($hScrollGUI)
    Local $Middle = ($ClientSize[0] / 2)

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

    _Schrift('Desktop Radio', 130, 0x005ACE, True)
    _Schrift('Version: 3.3.0.0', 145, 0x005ACE, False)
    _Schrift('Copyright © bla', 145, 0x005ACE, False)
    _Schrift('e-Mail: emaladdress@host.de', 170, 0x005ACE, False)
    GUICtrlCreateLabel("", 0 + 20, 200, $ClientSize[0] - 40, 2, -1, $WS_EX_STATICEDGE)

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

    _GUIScrollBars_Init($hScrollGUI)
    _GUIScrollBars_ShowScrollBar($hScrollGUI, $SB_HORZ, False)
    _GUIScrollBars_ShowScrollBar($hScrollGUI, $SB_VERT, False)

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

    GUISetState(@SW_SHOW, $hScrollGUI)
    GUISetState(@SW_SHOW, $hGUI)

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

    AdlibRegister("_auto", 100)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _auto()
    _GUIScrollBars_ScrollWindow($hScrollGUI, 0, -1)
    $OldMove =- 1
    EndFunc

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

    Func _Move()
    AdlibUnRegister("_auto")

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

    Local $Cursor2 = GUIGetCursorInfo($hScrollGUI)
    $OldMove = $Cursor2[1]

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

    While _IsPressed("01")
    $Cursor2 = GUIGetCursorInfo($hScrollGUI)
    If $Cursor2[1] <> $OldMove Then
    _GUIScrollBars_ScrollWindow($hScrollGUI, 0, $Cursor2[1] - $OldMove)
    EndIf
    $OldMove = $Cursor2[1]
    WEnd
    AdlibRegister("_auto", 100)
    EndFunc

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

    Func _calc($vaule1, $vaule2)
    Return $vaule2 - $vaule1
    ;~ If $vaule1 < $vaule2 Then Return $vaule2 - $vaule1
    EndFunc

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

    Func _Schrift($Text, $YPos, $Farbe = 0x005ACE, $Fett = False)
    If $Fett Then
    Local $Bold = 800
    Else
    Local $Bold = 400
    EndIf

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

    GUICtrlCreateLabel($Text, 0, $YPos, $ClientSize[0], 17, $SS_CENTER)
    GUICtrlSetFont(-1, Default, $Bold , 0, "MS Sans Serif", 5)
    GUICtrlSetColor(-1, $Farbe)
    EndFunc

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

    Func _Close()
    Exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Milla (20. Oktober 2010 um 10:14)

  • also bei mir funktionierts ohne probleme

    sobald ich drauf klicke verschiebt sich der text ganz genau mit der maus mit und bleibt auch immer auf der selben höhe wie die maus