#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$iGUI_Width = 600
$iGUI_Height = 400
$bSttngsSlider_MouseJump = True
$iSttngsSlider_Delay = 10
$hMain_GUI = GUICreate('Sliding Settings Demo!', $iGUI_Width, $iGUI_Height)
GUISetState(@SW_SHOW, $hMain_GUI)
$hSttngs_GUI = GUICreate('Settings', $iGUI_Width - 40, $iGUI_Height - 30, $iGUI_Width - 15, 15, BitOR($WS_CHILD, $WS_BORDER), -1, $hMain_GUI)
$iSttngs_Bttn = GUICtrlCreateButton('…', -2, ($iGUI_Height / 2) - 60, 18, 80)
GUICtrlSetFont(-1, 8.3, 0, 0, 'Wingdings 3')
GUICtrlSetTip(-1, 'Expand Settings')
$iSttngsSlider_MouseJump_CB = GUICtrlCreateCheckbox('Mouse Jump', 70, 20)
GUICtrlSetState(-1, Int($bSttngsSlider_MouseJump))
GUICtrlCreateCheckbox('Option 1', 70, 40)
GUICtrlCreateCheckbox('Option 2', 70, 60)
GUICtrlCreateCheckbox('Option 3', 70, 80)
GUICtrlCreateInput('Input', 70, 110)
$iSave_Bttn = GUICtrlCreateButton('Save', 20, $iGUI_Height - 60, 70, 20)
GUISetState(@SW_SHOW, $hSttngs_GUI)
$hCtrls_GUI = GUICreate('Sliding Settings Demo!', $iGUI_Width, $iGUI_Height, 0, 0, $WS_CHILD, -1, $hMain_GUI)
GUICtrlCreateButton('Some Button', 20, $iGUI_Height - 30, 100, 20)
GUISetState(@SW_SHOW, $hCtrls_GUI)
While 1
$iMsg = GUIGetMsg()
Switch $iMsg
Case $GUI_EVENT_CLOSE
Exit
Case $iSave_Bttn
$bSttngsSlider_MouseJump = (GUICtrlRead($iSttngsSlider_MouseJump_CB) = $GUI_CHECKED)
MsgBox(64, 'Info', 'Settings saved!', 0, $hSttngs_GUI)
ContinueCase
Case $iSttngs_Bttn
If GUICtrlRead($iSttngs_Bttn) = '†' Then
Local $iFrom = ($iGUI_Width - 40), $iTo = 15, $iStep = -30
Local $sArrow_Text = '…', $sTip_Text = 'Expand Settings'
Else
Local $iFrom = 15, $iTo = ($iGUI_Width - 40), $iStep = 30
Local $sArrow_Text = '†', $sTip_Text = 'Collapse Settings'
EndIf
For $i = $iFrom To $iTo Step $iStep
WinMove($hSttngs_GUI, '', $iGUI_Width - $i + 5, 15)
Sleep($iSttngsSlider_Delay)
Next
GUICtrlSetData($iSttngs_Bttn, $sArrow_Text)
GUICtrlSetTip($iSttngs_Bttn, $sTip_Text)
If $iMsg = $iSttngs_Bttn And $bSttngsSlider_MouseJump Then
Opt('MouseCoordMode', 0)
$aMPos = MouseGetPos()
$aCPos = ControlGetPos($hSttngs_GUI, '', $iSttngs_Bttn)
MouseMove($aCPos[0] + ($aCPos[2] / 2), $aMPos[1], 0)
EndIf
EndSwitch
WEnd