Что нового

простые часы с прозрачным фоном

dumoed

Знающий
Сообщения
34
Репутация
5
Версия AutoIt
3.3.14.0
Версия
3.3.14.0
Простые часы с прозрачным фоном. Основа для более серьезных проектов.
 

Вложения

  • transparent clock_0_4.au3
    1.6 КБ · Просмотры: 20

Prog

Продвинутый
Сообщения
537
Репутация
65
Код:
GUICtrlSetData($Label4,  @HOUR-6 & ":" & @MIN & ":" & @SEC)
В полночь получите время -6 часов!
 
Автор
D

dumoed

Знающий
Сообщения
34
Репутация
5
да, это так, временная мера, поправил, теперь работает так:

Часы на прозрачном фоне с контекстным меню:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;#include <WinAPI.au3>
#include <GuiMenu.au3>
;#include <SendMessage.au3>
#include <Date.au3>

Global Const $NONANTIALIASED_QUALITY = 3;smooth quality???

Global $Hour, $Mins, $Secs


$Main_GUI = GUICreate("", 221, 194, 496, 325, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED))
GUISetBkColor(0xCCCCCC)

$Label2 = GUICtrlCreateLabel("", 16, 8, 188, 172, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, 15, 400, 0, "Arial", $NONANTIALIASED_QUALITY)
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlSetData($Label2, '' )

; правый клик на gui выводит контекстное меню.
$Labelcontext = GUICtrlCreateContextMenu($Label2)

$Font = GUICtrlCreateMenuItem("Шрифт", $Labelcontext)
;$Font = GUICtrlCreateMenu("Шрифт", $Labelcontext)
;$submenu = GUICtrlCreateMenuItem("Часы", $Font)
;$submenu2 = GUICtrlCreateMenuItem("Город", $Font)
$MenuPoyas = GUICtrlCreateMenuItem("Пояс", $Labelcontext)
$MenuInfo = GUICtrlCreateMenuItem("Справка", $Labelcontext)
$ExitClock = GUICtrlCreateMenuItem("Выход", $Labelcontext)

GUISetState(@SW_SHOW, $Main_GUI)

_WinAPI_SetLayeredWindowAttributes($Main_GUI, 0xCCCCCC, 0, $LWA_COLORKEY)


AdlibRegister("_SetTimeProc", 1000); обращаемся к функции каждую секунду

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $ExitClock
            Exit
        sleep(200)
    EndSwitch
WEnd

Func _SetTimeProc()
    $sNewDate = _DateAdd( 'h',-6, _NowCalc()); используем добавление параметра к дате, в данном случае добавляем -6 часов (h)
    $ZoneTime=_DateTimeFormat($sNewDate, 5) ; используем _DateTimeFormat для форматирования, выводим только время 5
    $Time = StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs); в строку
    GUICtrlSetData($Label2, "владивосток "& @CRLF & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF & "москва" & @CRLF & $ZoneTime ); выводим
EndFunc



; Отображает меню в данном GUI окне, которое принадлежит данному элементу в GUI
Func ShowMenu($hWnd, $CtrlID, $nContextID)
    Local $arPos, $x, $y
    Local $hMenu = GUICtrlGetHandle($nContextID)

    $arPos = ControlGetPos($hWnd, "", $CtrlID)

    $x = $arPos[0]
    $y = $arPos[1] + $arPos[3]

    ClientToScreen($hWnd, $x, $y)
    TrackPopupMenu($hWnd, $hMenu, $x, $y)
EndFunc

; Конвертирует клиентские координаты (GUI) в абсолютные координаты экрана (desktop)
Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
    Local $stPoint = DllStructCreate("int;int")

    DllStructSetData($stPoint, 1, $x)
    DllStructSetData($stPoint, 2, $y)

    ; См. также _WinAPI_ClientToScreen
    DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))

    $x = DllStructGetData($stPoint, 1)
    $y = DllStructGetData($stPoint, 2)
    ; обнулять структуру не обязательно, так как она локальна
    $stPoint = 0
EndFunc

; Показать контекстное меню (hMenu) принадлежащее GUI окну (hWnd) в указанных координатах (x, y)
Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
    ; См. также _GUICtrlMenu_TrackPopupMenu
    DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
EndFunc
Сообщение автоматически объединено:


Сообщение автоматически объединено:

в поправленный код добавлено контекстное меню
 
Последнее редактирование:
Верх