Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 1)

Модерирует : gyra, Maz

Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


Код:
#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
;
 
HotKeySet("{F1}", "_CallAbout_Proc")
 
Global $aCover_GUIs[42]
Global $iOld_Left, $iOld_Top, $iScrollPos, $iFirstTime, $iScrollTimer, $iScrollSpeed = 1, $iCustom_ScrollSpeed = 3
Global $iLast_Mouse_YPos = -1, $iIsScrolling = False
Global
$hIsPressed
 
Global $iScroll_Movie_Effect = False
 
$hParentGui = GUICreate('Parent For "About Program" Demo', 200, 100)
 
$Menu = GUICtrlCreateMenu("Help")
$AboutItem = GUICtrlCreateMenuItem("About...    (F1)", $Menu)
 
GUISetState()
 
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case
$AboutItem
            _CallAbout_Proc()
    EndSwitch
WEnd
 
Func
_CallAbout_Proc()
    HotKeySet("{F1}")
 
    $Title = "About Info"
 
    $sScrollText = "I want to express special gratitude to:" & _
        "\n\n\n\nAutoIt Team\n\n\nAutoIt Community\n\n\n... and many other good people"
 
    $MainLabel = "My program Name"
    $CopyRLabel = "Copyright © " & @YEAR & " Company/Author. All rights reserved."
 
    $NameURL1 = "App Web Page"
    $URL1 = "http://www.autoitscript.com"
    $NameURL2 = "Email"
    $URL2 = "mailto:my_email@mail.com"
    $NameURL3 = "Some additional link"
    $URL3 = "http://personalwebpafe.com"
 
    $LinkColor = 0x0000FF
    $BkColor = 0xFFFFFF
 
    _AboutGUI($Title, $MainLabel, "Program version: " & @LF & "v1.0", $sScrollText, $CopyRLabel, _
        $NameURL1, $URL1, $NameURL2, $URL2, $NameURL3, $URL3, $hParentGui, @AutoItExe, $LinkColor, $BkColor, 500, 300)
 
    HotKeySet("{F1}", "_CallAbout_Proc")
EndFunc
 
Func
_AboutGUI($sTitle, $sMainLabelText, $sBodyText, $sScrollText, $sCopyRText, $sNameURL1, $sURL1, $sNameURL2, $sURL2, $sNameURL3, $sURL3, $hParent = 0, $sIconFile = "", $nLinkColor = 0x0000FF, $nBkColor = 0xFFFFFF, $iWidth = 300, $iHeight = 120, $iLeft = -1, $iTop = -1, $nStyle = -1, $nExStyle = -1)
    Local $iOldEventOpt = Opt("GUIOnEventMode", 0)
    Local $hAbout_GUI, $hScroll_GUI, $iAbout_Msg, $aCurInfo
 
    Local $aCurIsOnCtrlArr[1]
    Local $aLinkVisitedColor[4] = [3, $nLinkColor, $nLinkColor, $nLinkColor]
    Local $aLinkLabel[4], $iLinkTop = 120
 
    WinSetState($hParent, "", @SW_DISABLE)
 
    If $nExStyle = -1 Then $nExStyle = ""
    Local $hAbout_GUI = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, $nStyle, 0x00000080 + $nExStyle, $hParent)
 
    GUICtrlCreateLabel($sMainLabelText, 0, 20, $iWidth, 25, $ES_CENTER)
    GUICtrlSetFont(-1, 14)
 
    GUICtrlCreateIcon($sIconFile, 0, 10, 20)
    GUICtrlSetState(-1, 128)
 
    GUICtrlCreateGraphic(5, 75, $iWidth - 10, 3, $SS_ETCHEDFRAME)
 
    For $i = 1 To 3
        $aLinkLabel[$i] = GUICtrlCreateLabel(Eval("sNameURL" & $i), $iWidth - 150, $iLinkTop, 145, 15, 1)
        GUICtrlSetCursor(-1, 0)
        GUICtrlSetColor(-1, $nLinkColor)
        GUICtrlSetFont(-1, 9, 400, 0)
        GUICtrlSetTip(-1, Eval("sURL" & $i))
        $iLinkTop += 30
    Next
 
    GUICtrlCreateLabel($sBodyText, 10, 100, 140, 35)
    GUICtrlSetFont(-1, 10, 600, 0, "Tahoma")
 
    GUICtrlCreateLabel($sCopyRText, 0, $iHeight - 20, $iWidth, -1, 1)
    GUICtrlSetColor(-1, 0x969696)
    GUICtrlSetState(-1, 128)
 
    If Not $iScroll_Movie_Effect Then
        $hScroll_GUI = GUICreate('', 180, 160, 150, 90, $WS_CHILD, -1, $hAbout_GUI)
    Else
        $hScroll_GUI = GUICreate('', 180, 160, 150, 90, $WS_CHILD, $WS_EX_CLIENTEDGE+$WS_EX_DLGMODALFRAME, $hAbout_GUI)
        GUISetBkColor(0x0)
    EndIf
 
    Local
$Scroll_Label = GUICtrlCreateLabel(StringFormat($sScrollText), 0, 70, 180, 510, $ES_CENTER)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetFont(-1, 10)
 
    If Not $iScroll_Movie_Effect Then
        GUICtrlSetColor(-1, 0x804000)
    Else
        GUICtrlSetColor(-1, 0xFFFFFF)
    EndIf
 
    Dim
$iScrollPos = -70, $iFirstTime = 1, $iScrollTimer = TimerInit()
    Local $iTransHeight = 2, $iTransValue = (UBound($aCover_GUIs)/2) - 1, $aParentPos = WinGetPos($hAbout_GUI)
 
    If $iScroll_Movie_Effect Then $iTransHeight = 1
 
    $iOld_Left = $aParentPos[0]
    $iOld_Top = $aParentPos[1]
 
    For $i = 0 To $iTransValue
        ;Top Cover
        $aCover_GUIs[$i] = GUICreate("", 220, $iTransHeight + 2, _
            130 + $aParentPos[0], $iTransHeight * $i + 110 + $aParentPos[1], _
            $WS_POPUP, -1, $hAbout_GUI) ;$WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
 
        WinSetTrans($aCover_GUIs[$i], "", (255 / $iTransValue) * (-1 * ($i - $iTransValue)))
 
        ;Bottom cover
        $aCover_GUIs[$i + $iTransValue + 1] = GUICreate("", 220, $iTransHeight + 2, _
            130 + $aParentPos[0], 260 - $iTransHeight * $i + $aParentPos[1] + 20, _
            $WS_POPUP, -1, $hAbout_GUI) ;, $WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
 
        WinSetTrans($aCover_GUIs[$i + $iTransValue + 1], "", (255 / $iTransValue) * (-1 * ($i - $iTransValue)))
    Next
 
    GUISetState(@SW_SHOW, $hAbout_GUI)
    GUISetState(@SW_SHOW, $hScroll_GUI)
 
    For $i = 0 To 41
        GUISetState(@SW_SHOW, $aCover_GUIs[$i])
    Next
 
    GUICtrlSetState($Scroll_Label, $GUI_SHOW)
 
    $hIsPressed = DllOpen("User32.dll")
 
    Local $hCallBack = DllCallbackRegister("_ScrollText_CallBack_Proc", "none", "hwnd;int;int;dword")
    Local $ahTimer = DllCall("user32.dll", "int", "SetTimer", _
        "hwnd", $hScroll_GUI, "int", 1001, "int", 15, "ptr", DllCallbackGetPtr($hCallBack))
 
    GUISwitch($hAbout_GUI)
    GUIRegisterMsg($WM_MOVE, "WM_MOVE")
    WinActivate($hAbout_GUI)
 
    SoundPlay(@SystemDir & "\oobe\images\title.wma", 0)
 
    While 1
        $iAbout_Msg = GUIGetMsg()
 
        Switch $iAbout_Msg
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case
$aLinkLabel[1], $aLinkLabel[2], $aLinkLabel[3]
                GUISetCursor(0, 1, $hAbout_GUI)
                $aCurInfo = GUIGetCursorInfo($hAbout_GUI)
 
                If $iAbout_Msg = $aLinkLabel[1] Then $i = 1
                If $iAbout_Msg = $aLinkLabel[2] Then $i = 2
                If $iAbout_Msg = $aLinkLabel[3] Then $i = 3
 
                While $aCurInfo[2] = 1
                    $aCurInfo = GUIGetCursorInfo($hAbout_GUI)
                    Sleep(10)
                WEnd
 
                If $aCurInfo[4] = $iAbout_Msg Then
                    GUISetCursor(-1, 0, $hAbout_GUI)
                    $aLinkVisitedColor[$i] = 0xAC00A9
                    GUICtrlSetColor($iAbout_Msg, $aLinkVisitedColor[$i])
                    ShellExecute(Eval("sURL" & $i))
                EndIf
 
                GUISetCursor(-1, 0, $hAbout_GUI)
        EndSwitch
 
        Sleep(30)
 
        _ControlHover_Proc($hAbout_GUI, $aLinkLabel[1], 1, $aCurIsOnCtrlArr, 0xFF0000, $aLinkVisitedColor[1])
        _ControlHover_Proc($hAbout_GUI, $aLinkLabel[2], 2, $aCurIsOnCtrlArr, 0xFF0000, $aLinkVisitedColor[2])
        _ControlHover_Proc($hAbout_GUI, $aLinkLabel[3], 3, $aCurIsOnCtrlArr, 0xFF0000, $aLinkVisitedColor[3])
    WEnd
 
    DllCall("user32.dll", "int", "KillTimer", "hwnd", $hScroll_GUI, "int", $ahTimer[0])
    DllCallbackFree($hCallBack)
    DllClose($hIsPressed)
 
    GUIRegisterMsg($WM_MOVE, "")
    SoundPlay("")
 
    For $i = 0 To 41
        GUIDelete($aCover_GUIs[$i])
    Next
 
    WinSetState($hParent, "", @SW_ENABLE)
    GUIDelete($hAbout_GUI)
 
    GUISwitch($hParent)
    Opt("GUIOnEventMode", $iOldEventOpt)
EndFunc   ;==>_AboutGUI
 
Func _ScrollText_CallBack_Proc($hWnd, $iMsg, $wParam, $lParam)
    Local $hScroll_Label_Wnd = ControlGetHandle($hWnd, "", "Static1")
    Local $iScroll_Label_Ctrl = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $hScroll_Label_Wnd)
    $iScroll_Label_Ctrl = $iScroll_Label_Ctrl[0]
 
    If ($iIsScrolling Or _Control_GetHovered() = $hScroll_Label_Wnd) And _IsPressed(01, $hIsPressed) Then
        Local $iCurrent_Mouse_YPos = MouseGetPos(1)
        $iIsScrolling = True
 
        If $iLast_Mouse_YPos < $iCurrent_Mouse_YPos Then ;Move up
            $iScrollPos -= $iCustom_ScrollSpeed
 
            ControlMove($hWnd, "", "Static1", 0, -$iScrollPos)
        ElseIf $iLast_Mouse_YPos > $iCurrent_Mouse_YPos Then ;Move down
            $iScrollPos += $iCustom_ScrollSpeed
 
            ControlMove($hWnd, "", "Static1", 0, -$iScrollPos)
        EndIf
 
        GUICtrlSetCursor($iScroll_Label_Ctrl, 11)
 
        $iLast_Mouse_YPos = $iCurrent_Mouse_YPos
        $iScrollTimer = TimerInit()
        $iFirstTime = 1
 
        If $iScrollPos > 250 Or $iScrollPos < -250 Then $iScrollPos = -150
 
        Return
    Else
        $iIsScrolling = False
        GUICtrlSetCursor($iScroll_Label_Ctrl, 0)
    EndIf
 
    If ($iFirstTime And TimerDiff($iScrollTimer) > 1000) Or (Not $iFirstTime And TimerDiff($iScrollTimer) > 30) Then
        $iFirstTime = 0
        $iScrollTimer = TimerInit()
        $iScrollPos += $iScrollSpeed
 
        ControlMove($hWnd, "", "Static1", 0, -$iScrollPos)
        If $iScrollPos > 250 Then $iScrollPos = -150
    EndIf
 
    ;WM_MOVE($hAbout_GUI, 0, 0, 0)
EndFunc   ;==>_ScrollText_CallBack_Proc
 
Func WM_MOVE($hWndGUI, $MsgID, $wParam, $lParam)
    Local $aParentPosArr, $aChildPosArr, $iNew_Left, $iNew_Top
    $aParentPosArr = WinGetPos($hWndGUI)
 
    For $i = 0 To 41
        $aChildPosArr = WinGetPos($aCover_GUIs[$i])
 
        $iNew_Left = $aChildPosArr[0]
        $iNew_Top = $aChildPosArr[1]
 
        If $iOld_Left > $aParentPosArr[0] Then
            $iNew_Left = $aChildPosArr[0] + ($aParentPosArr[0] - $iOld_Left)
        ElseIf $iOld_Left < $aParentPosArr[0] Then
            $iNew_Left = $aChildPosArr[0] - ($iOld_Left - $aParentPosArr[0])
        EndIf
 
        If $iOld_Top > $aParentPosArr[1] Then
            $iNew_Top = $aChildPosArr[1] - ($iOld_Top - $aParentPosArr[1])
        ElseIf $iOld_Top < $aParentPosArr[1] Then
            $iNew_Top = $aChildPosArr[1] + ($aParentPosArr[1] - $iOld_Top)
        EndIf
 
        If $iOld_Left = $iNew_Left And $iOld_Top = $iNew_Top Then Return
 
        WinMove($aCover_GUIs[$i], "", $iNew_Left, $iNew_Top)
    Next
 
    $iOld_Left = $aParentPosArr[0]
    $iOld_Top = $aParentPosArr[1]
EndFunc   ;==>WM_MOVE
 
Func _Control_GetHovered()
    Local $iOld_Opt_MCM = Opt("MouseCoordMode", 1)
    Local $Ret = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1))
 
    Opt("MouseCoordMode", $iOld_Opt_MCM)
 
    Return HWnd($Ret[0])
EndFunc   ;==>_Control_GetHovered
 
Func _ControlHover_Proc($hWnd, $iCtrlID, $iCtrlNum, ByRef $aCurIsOnCtrlArr, $nHoverColor = 0xFF0000, $nLinkColor = 0x0000FF)
    Local $aCursorCtrl = GUIGetCursorInfo($hWnd)
    ReDim $aCurIsOnCtrlArr[UBound($aCurIsOnCtrlArr) + 1]
 
    If $aCursorCtrl[4] = $iCtrlID And $aCurIsOnCtrlArr[$iCtrlNum] = 1 Then
        GUICtrlSetFont($iCtrlID, 9, 400, 6)
        GUICtrlSetColor($iCtrlID, $nHoverColor)
        $aCurIsOnCtrlArr[$iCtrlNum] = 0
    ElseIf $aCursorCtrl[4] <> $iCtrlID And $aCurIsOnCtrlArr[$iCtrlNum] = 0 Then
        GUICtrlSetFont($iCtrlID, 9, 400, 0)
        GUICtrlSetColor($iCtrlID, $nLinkColor)
        $aCurIsOnCtrlArr[$iCtrlNum] = 1
    EndIf
EndFunc   ;==>_ControlHover_Proc


Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:42 10-11-2008 | Исправлено: ViSiToR, 23:27 10-11-2008
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 1)
Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru