Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Таимер в реальном времени/трёхугольныи GUI (http://forum.oszone.net/showthread.php?t=178556)

Antoschka2 18-06-2010 20:02 1437010

Таимер в реальном времени/трёхугольныи GUI
 
Добрыи день,
может мне кто подсказать с какои функциеи мне надо работать(я в мануале почитаю).

Смысл скрипта обычныи: GUI а в нутри просто часики показывающие время прошедшее с заданного момента, а ниже наоборот отсчёт времени до заданного времени.
это с какими функциями надо работать для показа счётчика в реальном времени?

Второи вопрос: реально ли это в autoit создать например треугольныи GUI(скажем мне надо чтобы на рабочем столе высвечивалась картинка в виде треугольника и тикали мои часики. Подскажите логику пожалуиста


Заранее благодарю

Yashied 18-06-2010 20:50 1437036

Можно так:

Код:

#Include <StaticConstants.au3>
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>

Global $Timer

Dim $aPoint[10][2] = [[0, 180], [190, 180], [250, 0], [308, 180], [500, 180], [344, 294], [404, 475], [250, 362], [94, 475], [154, 294]]

$hForm = GUICreate('MyGUI', 500, 475, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
$Label = GUICtrlCreateLabel('00:00:00', 180, 246, 140, 23, $SS_CENTER)
GUICtrlSetFont(-1, 20, 400, 0, 'Lucida Console')
GUICtrlSetColor(-1, 0xFFFF00)
$Button = GUICtrlCreateButton('Reset', 220, 290, 60, 21)
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
GUISetBkColor(0xAA0000)

$hRgn = _WinAPI_CreatePolygonRgn($aPoint)
_WinAPI_SetWindowRgn($hForm, $hRgn)

$Timer = TimerInit()
AdlibRegister('_Update', 1000)

GUISetState()

While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3
            ExitLoop
        Case $Button
            $Timer = TimerInit()
            GUICtrlSetData($Label, '00:00:00')
    EndSwitch
WEnd

Func _Update()

    Local $H, $M, $S, $Time = Round(TimerDiff($Timer) / 1000)

    If $Time > 86400 Then ; > 24 hours
        $Time -= 86400
    EndIf
    $S = Mod($Time, 60)
    $Time = ($Time - $S) / 60
    $M = Mod($Time, 60)
    $Time = ($Time - $M) / 60
    $H = Mod($Time, 24)
    GUICtrlSetData($Label, StringFormat('%02d:%02d:%02d', $H, $M, $S))
EndFunc  ;==>_Update

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
            Switch $iMsg
                Case $WM_NCHITTEST
                    Return $HTCAPTION
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc  ;==>WM_NCHITTEST

WinAPIEx.au3

Creat0R 18-06-2010 23:27 1437121

Цитата:

Цитата Antoschka2
Второи вопрос »

В отдельную тему.

Antoschka2 20-06-2010 13:31 1437833

Спасибо, за хорошии код, но я не спец в этот, поэтому можно было бы ещё подсказать какую функцию использовать надо для включение калькулятора для отсчёта времени.
Спасибо заранее


Время: 15:25.

Время: 15:25.
© OSzone.net 2001-