#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>
#include <GUICtrlSetOnHover_UDF.au3> ;Библиотека "событие при наведении"
;
Global $Images_Path = @ScriptDir & "\Images"
Global $sRunApp = ""
$Maper = GUICreate("Мапер", 600, 150, -1, -1);,$WS_POPUP)
GUICtrlCreateGroup("Hammer Editor", 5, 5, 235, 105) ; Создание группы Hammer Editor
$CSM_Hammer = GUICtrlCreateIcon($Images_Path & "\CSM_Hammer.ico", 0, 10, 17, 64, 64)
$Hammer_v35 = GUICtrlCreateIcon($Images_Path & "\Hammer34.ico", 0, 90, 17, 64, 64)
$Hammer_v34 = GUICtrlCreateIcon($Images_Path & "\Hammer34.ico", 0, 170, 17, 64, 64)
GUICtrlCreateLabel("CSM Hammer", 10, 93, 65, 15)
GUICtrlCreateLabel("Hammer v3.5", 90, 93, 65, 15)
GUICtrlCreateLabel("Hammer v3.4", 170, 93, 65, 15)
_GUICtrl_SetOnHover($CSM_Hammer, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($Hammer_v35, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($Hammer_v34, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
GUICtrlCreateGroup("Декомпиляторы", 245, 5, 160, 105) ; Создание группы Декомпиляторы
$Bsp2Map = GUICtrlCreateIcon($Images_Path & "\bsp2map.ico", 0, 250, 17, 64, 64)
$WinBsp = GUICtrlCreateIcon($Images_Path & "\WinBSP.ico", 0, 330, 17, 64, 64)
GUICtrlCreateLabel("BSP To MAP", 250, 93, 65, 15)
GUICtrlCreateLabel(" Win BSP", 330, 93, 65, 15)
_GUICtrl_SetOnHover($Bsp2Map, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($WinBsp, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
GUICtrlCreateGroup("Pak Editors", 410, 5, 155, 105) ; Создание группы Pak Editors
$PakExplorer = GUICtrlCreateIcon($Images_Path & "\PakExplorer.ico", 0, 415, 17, 64, 64)
$PakScape = GUICtrlCreateIcon($Images_Path & "\PakScape.ico", 0, 495, 17, 64, 64)
GUICtrlCreateLabel("Pak Explorer", 415, 93, 65, 15)
GUICtrlCreateLabel(" Pak Scape", 495, 93, 65, 15)
_GUICtrl_SetOnHover($PakExplorer, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($PakScape, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
GUICtrlCreateGroup("Разное", 570, 5, 235, 105) ; Создание группы Разное
$BspView = GUICtrlCreateIcon($Images_Path & "\BspView.ico", 0, 575, 17, 64, 64)
$Wally = GUICtrlCreateIcon($Images_Path & "\Wally.ico", 0, 655, 17, 64, 64)
$Calc = GUICtrlCreateIcon($Images_Path & "\calc.ico", 0, 735, 17, 64, 64)
GUICtrlCreateLabel(" BSP View", 575, 93, 65, 15)
GUICtrlCreateLabel("Wally v1.55", 655, 93, 65, 15)
GUICtrlCreateLabel("Калькулятор", 735, 93, 65, 15)
_GUICtrl_SetOnHover($BspView, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($Wally, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($Calc, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
GUICtrlCreateGroup("Разное", 810, 5, 235, 105) ; Создание группы Разное
$CS = GUICtrlCreateIcon($Images_Path & "\CS.ico", 0, 815, 17, 64, 64)
$HL = GUICtrlCreateIcon($Images_Path & "\HL.ico", 0, 895, 17, 64, 64)
GUICtrlCreateLabel("Месть терр.", 815, 93, 65, 15)
GUICtrlCreateLabel("HL Базука", 895, 93, 65, 15)
_GUICtrl_SetOnHover($CS, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
_GUICtrl_SetOnHover($HL, "ButtonSelect", "ButtonDeSelect", "ButtonDown", "ButtonUp", 0, 0)
GUISetState()
$iScrollInfoMax = 150
GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")
_GUIScrollBars_Init($Maper, -1, 1)
_GUIScrollBars_SetScrollInfoMax($Maper, $SB_HORZ, $iScrollInfoMax)
_GUIScrollBars_SetScrollInfoMax($Maper, $SB_VERT, 0)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $sRunApp = "" Then ContinueLoop
$sMessage = ""
Switch $sRunApp
Case "CSM_Hammer"
$sMessage = "Запуск CSM Hammer"
Case "Hammer_v35"
$sMessage = "Запуск Hammer v3.5"
Case "Hammer_v34"
$sMessage = "Запуск Hammer v3.4"
Case "Bsp2Map"
$sMessage = "Запуск BSP2 To MAP"
Case "WinBsp"
$sMessage = "Запуск Win BSP"
Case "PakExplorer"
$sMessage = "Запуск Pak Explorer"
Case "PakScape"
$sMessage = "Запуск Pak Scape"
Case "BspView"
$sMessage = "Запуск BSP View"
Case "Wally"
$sMessage = "Запуск Wally"
Case "Calc"
$sMessage = "Запуск Калькулятора"
Case "CS"
$sMessage = "Запуск Counter - Strice Месть террористов"
Case "HL"
$sMessage = "Запуск Half - Life Базука"
EndSwitch
MsgBox(64, "Runing...", $sMessage, 0, $Maper)
$sRunApp = ""
WEnd
Func ButtonDeSelect($iCtrlID)
$sApp = _GetAppVal($iCtrlID)
GUICtrlSetImage($iCtrlID, $Images_Path & "\" & $sApp & ".ico", 0)
EndFunc ;==>ButtonDeSelect
Func ButtonDown($iCtrlID)
$sApp = _GetAppVal($iCtrlID)
GUICtrlSetImage($iCtrlID, $Images_Path & "\" & $sApp & "_d.ico", 0)
EndFunc ;==>ButtonDown
Func ButtonSelect($iCtrlID)
Local $aCtrlPos = ControlGetPos($Maper, "", $iCtrlID)
GUICtrlSetPos($iCtrlID, $aCtrlPos[0], $aCtrlPos[1] - 1)
GUICtrlSetPos($iCtrlID, $aCtrlPos[0], $aCtrlPos[1])
$sApp = _GetAppVal($iCtrlID)
GUICtrlSetImage($iCtrlID, $Images_Path & "\" & $sApp & "_s.ico", 0)
EndFunc ;==>ButtonSelect
Func ButtonUp($iCtrlID)
$sApp = _GetAppVal($iCtrlID)
$sRunApp = _GetAppVal($iCtrlID, 1)
GUICtrlSetImage($iCtrlID, $Images_Path & "\" & $sApp & "_s.ico", 0)
EndFunc ;==>ButtonUp
Func _GetAppVal($iCtrlID, $iMode = 0)
$aApps = StringSplit("CSM_Hammer|Hammer_v35|Hammer_v34|Bsp2Map|WinBsp|PakExplorer|PakScape|BspView|Wally|Calc|CS|HL", "|")
For $i = 1 To $aApps[0]
If $iCtrlID = Eval($aApps[$i]) Then
If $iMode = 0 Then
$aApps[$i] = StringReplace($aApps[$i], "_v", "")
$aApps[$i] = StringReplace($aApps[$i], "35", "34")
EndIf
Return $aApps[$i]
EndIf
Next
EndFunc ;==>_GetAppVal
Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
#forceref $Msg, $lParam
Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
Local $index = -1, $xChar, $xPos
Local $Min, $Max, $Page, $Pos, $TrackPos
For $x = 0 To UBound($aSB_WindowInfo) - 1
If $aSB_WindowInfo[$x][0] = $hWnd Then
$index = $x
$xChar = $aSB_WindowInfo[$index][2]
ExitLoop
EndIf
Next
If $index = -1 Then Return 0
;~ ; Get all the horizontal scroll bar information
Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_HORZ)
$Min = DllStructGetData($tSCROLLINFO, "nMin")
$Max = DllStructGetData($tSCROLLINFO, "nMax")
$Page = DllStructGetData($tSCROLLINFO, "nPage")
; Save the position for comparison later on
$xPos = DllStructGetData($tSCROLLINFO, "nPos")
$Pos = $xPos
$TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")
#forceref $Min, $Max
Switch $nScrollCode
Case $SB_LINELEFT ; user clicked left arrow
DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)
Case $SB_LINERIGHT ; user clicked right arrow
DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)
Case $SB_PAGELEFT ; user clicked the scroll bar shaft left of the scroll box
DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)
Case $SB_PAGERIGHT ; user clicked the scroll bar shaft right of the scroll box
DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)
Case $SB_THUMBTRACK ; user dragged the scroll box
DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
EndSwitch
;~ // Set the position and then retrieve it. Due to adjustments
;~ // by Windows it may not be the same as the value set.
DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
_GUIScrollBars_SetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
_GUIScrollBars_GetScrollInfo($hWnd, $SB_HORZ, $tSCROLLINFO)
;// If the position has changed, scroll the window and update it
$Pos = DllStructGetData($tSCROLLINFO, "nPos")
If ($Pos <> $xPos) Then _GUIScrollBars_ScrollWindow($hWnd, $xChar * ($xPos - $Pos), 0)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_HSCROLL