Hallo liebe AuoIt-Community!
Ich habe zwei Fragen zur Verwendung von Scrollbalken in GUIs.
1. Wie lässt sich verhindern, dass Steuerelemente (z. B. Buttons) beim Scrollen verschoben werden?
2. Eine mit GDI+ gezeichnete Grafik (Linie), die länger ist als das GUI wird beim Scrollen kürzer. Wie lässt sich dieses verhindern?
Vielen Dank für Eure Hilfe!
Spoiler anzeigen
#include-once
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <GUIScrollbars.au3>
#include <ScrollBarConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $x1 = 0, $x2 = 600, $xScroll
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{LEFT}", "_Scrollen")
HotKeySet("{RIGHT}", "_Scrollen")
$Fenster = GUICreate("Fenster zu Testzwecken", 500, 500, Default, Default, BitOR(Default, $WS_HSCROLL))
$Button1 = GUICtrlCreateButton("Zeichnen", 0, 0, 75, 25)
GUICtrlSetOnEvent(-1, "_Zeichnen")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Beenden")
GUISetState()
_GUIScrollBars_Init($Fenster)
_GUIScrollBars_ShowScrollBar($Fenster, $SB_VERT, False)
_GUIScrollBars_SetScrollRange($Fenster, $SB_HORZ, 0, 100)
_GUIScrollBars_SetScrollInfoPage($Fenster, $SB_HORZ, 5)
GUIRegisterMsg($WM_HSCROLL, "_SystemScrollen")
GUIRegisterMsg($WM_VSCROLL, "_SystemScrollen")
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$Grafik = _GDIPlus_GraphicsCreateFromHWND($Fenster)
$Stift = _GDIPlus_PenCreate(0xFF000000, 5)
_Zeichnen ()
[/autoit] [autoit][/autoit] [autoit]Do
Until GUIGetMsg() = -3
Func _Zeichnen ()
_GDIPlus_GraphicsDrawLine($Grafik, $x1, 250, $x2, 250, $Stift)
EndFunc
Func _Scrollen ()
$xScroll = 0
Switch @HotKeyPressed
Case "{LEFT}"
If $x1+$xScroll > 0 Then $xScroll -= 10
Case "{RIGHT}"
$xScroll +=10
EndSwitch
_GUIScrollBars_ScrollWindow($Fenster, $xScroll, 0)
$x1 += $xScroll
$x2 += $xScroll
EndFunc
Func _SystemScrollen ($hWndGUI, $MsgID, $WParam, $LParam)
_GUIScrollBars_SetScrollInfoPos($Fenster, $SB_HORZ, _GUIScrollBars_GetScrollInfoTrackPos($Fenster, $SB_HORZ))
$x1 += $WParam
$x2 += $WParam
EndFunc
Func _Beenden ()
_GDIPlus_PenDispose($Stift)
_GDIPlus_GraphicsDispose($Grafik)
_GDIPlus_Shutdown()
Exit
EndFunc