Man könnte auch in einem Programm mit Func OnAutoItExit() eine Umgebungsvariable setzen und dann in dem anderen diese überprüfen.
Beiträge von name22
-
-
Funktioniert

-
Zitat
Das ganze Skript würde den Rahmen hier auch ein wenig sprengen denke ich mal sind so ca.2500 Zeilen.
Das glaub ich nicht. Wieso postest du es nicht einfach es kann schließlich jeder selbst entscheiden ob er sich die Mühe einer Fehlersuche macht. -
Du musst theorethisch nur von der Grafik mit dem Text eine Bitmap erstellen. Das Problem ist, dass ich bei der Funktion nicht ganz durchblicke.

-
ProcessExists() ?
-
Meinst du das hier?
-
Das ist dann schon schwieriger. Man müsste im Prinzip das Bild krümmen, aber inwiefern das mit Autoit realisierbar ist weiß ich leider nicht.
EDIT: Vielleicht mit BitmapLockBits() und BitmapUnLockBits() -
Ich glaub das ist ziemlich kompliziert, aber meinst du vielleicht sowas in der Art nur mit Krümmung und sowas?
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>$hGUI = GUICreate("Umblättertest", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit]
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphics)
Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
_GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
_GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)Global $hPen = _GDIPlus_PenCreate(0xFF000000, 3)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsFillEllipse($hGraphics, 350, 350, 50, 50)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_PenDispose($hPen)
Exit
Case $GUI_EVENT_PRIMARYDOWN
Switch $nMsg[3]
Case 350 To 400
Switch $nMsg[4]
Case 350 To 400
_Umblaettern()
_GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)
_GDIPlus_GraphicsFillEllipse($hGraphics, 350, 350, 50, 50)
EndSwitch
EndSwitch
EndSwitch
WEndFunc _Umblaettern()
[/autoit]
$iX = 400
$iY = 400
For $i = 0 To 100
_GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
_GDIPlus_GraphicsDrawLine($hBuffer, 400, 0, $iX, $iY, $hPen)
_GDIPlus_GraphicsDrawLine($hBuffer, 0, 400, $iX, $iY, $hPen)
_GDIPlus_GraphicsFillEllipse($hBuffer, 350, 350, 50, 50)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 400, 400)
$iX -= 4
$iY -= 4
Sleep(20)
Next
EndFunc ;==>_UmblaetternEinfach auf den Kreis klicken.
-
Funktioniert recht gut, aber wenn ich z.B. "Franz" als Kontakt abspeichere und dann nach "franz" suche ist "franz" plötzlich kleingeschrieben.
-
Naja immerhin ein Anfang
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>HotKeySet("{ESC}", "_Clear")
[/autoit] [autoit][/autoit] [autoit]Global $GUIColorBG = 0xFFFFFFFF
[/autoit] [autoit][/autoit] [autoit]
Global $LineColor = 0xFF000000
Global $LineWidth = 6$TestGUI = GUICreate("Test", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($TestGUI)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
_GDIPlus_GraphicsClear($hGraphics, $GUIColorBG)Global $hBrush = _GDIPlus_BrushCreateSolid($LineColor)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_PRIMARYDOWN
While _IsPressed("01") = 1
$nMsg = GUIGetMsg(1)
_DrawFreehand($nMsg[3], $nMsg[4])
Sleep(50)
WEnd
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGraphics)
Exit
EndSwitch
WEndFunc _DrawFreehand($MousePosX, $MousePosY)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillEllipse($hGraphics, $MousePosX - $LineWidth / 2, $MousePosY - $LineWidth / 2, $LineWidth, $LineWidth, $hBrush)
EndFuncFunc _Clear()
[/autoit]
_GDIPlus_GraphicsClear($hGraphics, $GUIColorBG)
EndFuncEdit: Und hier die bessere Version von Oscar
Spoiler anzeigen
[autoit]#include<Misc.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<GuiConstantsEx.au3>
#include<GDIPlus.au3>
Opt('MouseCoordMode', 2)
_Main()Func _Main()
[/autoit]
Local $hGUI, $hWnd, $hGraphic, $hPen, $aPos[2], $aOldPos[2]
Local $width = @DesktopWidth, $height = @DesktopHeight
Local $dll = DllOpen('user32.dll')
$hGUI = GUICreate('GDI+', $width, $height)
$hWnd = WinGetHandle('GDI+')
GUISetState()
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hPen = _GDIPlus_PenCreate(0xff00ff00, 2)
$timer = TimerInit()
Do
$aPos = MouseGetPos()
If _IsPressed('01', $dll) Then
_GDIPlus_GraphicsDrawLine($hGraphic, $aOldPos[0], $aOldPos[1], $aPos[0], $aPos[1], $hPen)
If TimerDiff($timer) > 500 Then
_GDIPlus_PenSetColor($hPen, '0xFF' & StringRight(Hex(Random(0, 16777215, 1)), 6))
$timer = TimerInit()
EndIf
EndIf
$aOldPos[0] = $aPos[0]
$aOldPos[1] = $aPos[1]
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Clean up resources
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
DllClose($dll)
EndFunc ;==>_Main -
Was ist mit EnvSet und EnvGet?
-
Du solltest für die größe deiner GUI lieber Makros verwenden wie @DesktopWidth o.Ä. Bei mir geht das Fenster nämlich über meinen Bildschirm hinaus.
-
Funktioniert wenn es das tun soll was es macht^^. Ich versteh leider immer noch nicht wo da der Unterschied zur offiziellen Funktion liegt.
P.s. Ich kann das unter deinem Avatar nicht lesen. -
Ich verstehe leider dein Problem nicht ganz, aber für gewöhnlich ließt IniRead nur das aus was hinter dem "=" steht und überspringt dabei keine Zeilen. Man muss also im Prinzip keinen Abstand zwischen den Zeilen einer Ini haben. Wenn du alles auslesen möchtest was in einer [Section] steht kannst du auch IniReadSection verwenden. Wieso möchtest du überhaupt FileReadLine bei einer Ini verwenden?
-
Das kommt aufs selbe raus. Mit dem "&" Operator wird ein String an einen anderen angehängt, nicht addiert.
-
Rein interessehalber: Zu welchem Zweck?
-
Ich weiss, dass er von einem externen Programm gesprochen hat deswegen habe ich ja auch ProcessClose vorgeschlagen. Ausserdem habe ich nicht nur von Scripts geredet.
-
Damit schließt du ein Fenster. Ein Script lässt sich je nach Script wohl nur aus selbigem heraus "ordnungsgemäß" beenden und das selbe gilt für Programme. Komischer Satz :wacko:
Und was wäre mit ProcessClose? Als ordnungsgemäß lässt sich das vielleicht nicht bezeichenen, aber das stört kaum ein Programm. -
Vielleicht auch lieber mit _Ispressed arbeiten, da man die Tasten dann gedrückt halten kann um einen Sound länger abzuspielen.
Obwohl es dann immer noch stottert, da Beep auch einem Sleep Befehl gleichkommt. -
Schau dir doch mal das Beispielscript aus dem Autoit Ordner an:
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Description ...: Simple clock using layered windows
; Author ........: Paul Campbell (PaulIA)
; Notes .........:
; ===============================================================================================================================; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Global constants
; ===============================================================================================================================Global Const $iCenter = 200
[/autoit] [autoit][/autoit] [autoit]
Global Const $iDotOpacity = 250
Global Const $iHourRad = 140
Global Const $iMinRad = 200
Global Const $iOpacity = 128
Global Const $nPI = 3.1415926535897932384626433832795
Global Const $iRadius = 200
Global Const $iSecRad = 200
Global Const $iTickLen = 0.02Global Const $AC_SRC_ALPHA = 1
[/autoit] [autoit][/autoit] [autoit]Global Enum $eScrDC=0, $eMemDC, $eBitmap, $eWidth, $eHeight, $eGraphic, $ePen, $eCap, $eBrush, $eFormat, $eFamily, $eFont, $eLayout, $eLast
[/autoit] [autoit][/autoit] [autoit]; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Global variables
; ===============================================================================================================================Global $hDial, $hTime, $hHour, $hMin, $hSec, $hDot, $aTime, $aHour, $aMin, $aSec, $aCurr[3][2], $aLast[3][2]
[/autoit] [autoit][/autoit] [autoit]; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Main
; ===============================================================================================================================ClockInit()
[/autoit] [autoit][/autoit] [autoit]
DialDraw ()
Draw ()
DotDraw ()
ClockLoop()
ClockDone(); ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Finalize clock
; ===============================================================================================================================
Func ClockDone()
; Finalize GDI+ resources
TimeDone()
HourDone()
MinDone ()
SecDone (); Finalize GDI+ library
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Shutdown()
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Initialize clock
; ===============================================================================================================================
Func ClockInit()
Local $iX, $iY; Calculate the dial frame caption size
[/autoit] [autoit][/autoit] [autoit]
$iX = -(_WinAPI_GetSystemMetrics($SM_CXFRAME))
$iY = -(_WinAPI_GetSystemMetrics($SM_CYCAPTION) + _WinAPI_GetSystemMetrics($SM_CYFRAME)); Allocate the window resources
[/autoit] [autoit][/autoit] [autoit]
$hDial = GUICreate("Clock", $iRadius * 2, $iRadius * 2, -1, -1, 0, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
GUISetState()
$hTime = GUICreate("Time" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
GUISetState()
$hHour = GUICreate("Hour" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
GUISetState()
$hMin = GUICreate("Min" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
GUISetState()
$hSec = GUICreate("Sec" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
GUISetState()
$hDot = GUICreate("Dot" , $iRadius * 2, $iRadius * 2, $iX, $iY, 0, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hDial)
GUISetState(); Initialize GDI+ library
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup(); Initialize GDI+ resources
[/autoit] [autoit][/autoit] [autoit]
TimeInit()
HourInit()
MinInit ()
SecInit (); Hook non client hit test message so we can move the clock
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Loop until user exits
; ===============================================================================================================================
Func ClockLoop()
do
Draw()
until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the center dot
; ===============================================================================================================================
Func DotDraw()
Local $aDot$aDot = ResourceInit($iRadius * 2, $iRadius * 2)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillEllipse($aDot[$eGraphic], $iRadius-10, $iRadius-10, 20, 20)
ResourceSet ($hDot, $aDot, $iDotOpacity)
ResourceDone($aDot)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the clock elements
; ===============================================================================================================================
Func Draw()
; Calculate current time element position
$aLast = $aCurr
$aCurr[0][0] = $iCenter + Cos(TimeToRadians("sec" )) * $iSecRad
$aCurr[0][1] = $iCenter - Sin(TimeToRadians("sec" )) * $iSecRad
$aCurr[1][0] = $iCenter + Cos(TimeToRadians("min" )) * $iMinRad
$aCurr[1][1] = $iCenter - Sin(TimeToRadians("min" )) * $iMinRad
$aCurr[2][0] = $iCenter + Cos(TimeToRadians("hour")) * $iHourRad
$aCurr[2][1] = $iCenter - Sin(TimeToRadians("hour")) * $iHourRad; Draw time elements
[/autoit] [autoit][/autoit] [autoit]
TimeDraw()
HourDraw()
MinDraw ()
SecDraw ()
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the clock dial
; ===============================================================================================================================
Func DialDraw()
Local $aDial, $hPen1, $hPen2, $iI, $iN, $iX1, $iY1, $iX2, $iY2$aDial = ResourceInit($iRadius * 2, $iRadius * 2)
[/autoit] [autoit][/autoit] [autoit]
$hPen1 = _GDIPlus_PenCreate()
$hPen2 = _GDIPlus_PenCreate(0xFF0000FF, 4)
for $iI = 0 to 2 * $nPI Step $nPI / 30
$iX1 = $iCenter + Cos($iI) * ($iRadius * (1.00 - $iTickLen))
$iY1 = $iCenter - Sin($iI) * ($iRadius * (1.00 - $iTickLen))
$iX2 = $iCenter + Cos($iI) * $iRadius
$iY2 = $iCenter - Sin($iI) * $iRadius
if Mod($iN, 5) = 0 then
_GDIPlus_GraphicsDrawLine($aDial[$eGraphic], $iX1, $iY1, $iX2, $iY2, $hPen2)
else
_GDIPlus_GraphicsDrawLine($aDial[$eGraphic], $iX1, $iY1, $iX2, $iY2, $hPen1)
endif
$iN += 1
next
_GDIPlus_PenDispose($hPen2)
_GDIPlus_PenDispose($hPen1)ResourceSet ($hDial, $aDial)
[/autoit] [autoit][/autoit] [autoit]
ResourceDone($aDial)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Finalize resources for the hour hand
; ===============================================================================================================================
Func HourDone()
_GDIPlus_PenDispose($aHour[$ePen])
_GDIPlus_ArrowCapDispose($aHour[$eCap])
ResourceDone($aHour)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the hour hand
; ===============================================================================================================================
Func HourDraw()
if ($aLast[2][0] = $aCurr[2][0]) and ($aLast[2][1] = $aCurr[2][1]) then Return
_GDIPlus_GraphicsDrawLine($aHour[$eGraphic], $iCenter, $iCenter, $aCurr[2][0], $aCurr[2][1], $aHour[$ePen])
ResourceSet($hHour, $aHour)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Initialize resources for the hour hand
; ===============================================================================================================================
Func HourInit()
$aHour = ResourceInit($iRadius * 2, $iRadius * 2)
$aHour[$ePen] = _GDIPlus_PenCreate(0xFFFF00FF)
$aHour[$eCap] = _GDIPlus_ArrowCapCreate($iHourRad / 2,
_GDIPlus_PenSetCustomEndCap($aHour[$ePen], $aHour[$eCap])
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Finalize resources for the minute hand
; ===============================================================================================================================
Func MinDone()
_GDIPlus_PenDispose($aMin[$ePen])
_GDIPlus_ArrowCapDispose($aMin[$eCap])
ResourceDone($aMin)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the minute hand
; ===============================================================================================================================
Func MinDraw()
if ($aLast[1][0] = $aCurr[1][0]) and ($aLast[1][1] = $aCurr[1][1]) then Return
_GDIPlus_GraphicsFillRect($aMin[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
_GDIPlus_GraphicsDrawLine($aMin[$eGraphic], $iCenter, $iCenter, $aCurr[1][0], $aCurr[1][1], $aMin[$ePen])
ResourceSet($hMin, $aMin)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Initialize resources for the minute hand
; ===============================================================================================================================
Func MinInit()
$aMin = ResourceInit($iRadius * 2, $iRadius * 2)
$aMin[$ePen] = _GDIPlus_PenCreate(0xFFFF0000)
$aMin[$eCap] = _GDIPlus_ArrowCapCreate($iMinRad / 2,
_GDIPlus_PenSetCustomEndCap($aMin[$ePen], $aMin[$eCap])
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Finalize resources for the second hand
; ===============================================================================================================================
Func SecDone()
_GDIPlus_PenDispose($aSec[$ePen])
ResourceDone($aSec)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the second hand
; ===============================================================================================================================
Func SecDraw()
if ($aLast[0][0] = $aCurr[0][0]) and ($aLast[0][1] = $aCurr[0][1]) then Return
_GDIPlus_GraphicsFillRect($aSec[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
_GDIPlus_GraphicsDrawLine($aSec[$eGraphic], $iCenter, $iCenter, $aCurr[0][0], $aCurr[0][1], $aSec[$ePen])
ResourceSet($hSec, $aSec)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Initialize resources for the second hand
; ===============================================================================================================================
Func SecInit()
$aSec = ResourceInit($iRadius * 2, $iRadius * 2)
$aSec[$ePen] = _GDIPlus_PenCreate(0xFF000000)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Finalize drawing resources
; ===============================================================================================================================
Func ResourceDone(ByRef $aInfo)
_GDIPlus_GraphicsDispose($aInfo[$eGraphic])
_WinAPI_ReleaseDC (0, $aInfo[$eScrDC])
_WinAPI_DeleteObject($aInfo[$eBitmap])
_WinAPI_DeleteDC ($aInfo[$eMemDC ])
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Initialize bitmap resources
; ===============================================================================================================================
Func ResourceInit($iWidth, $iHeight)
Local $aInfo[$eLast + 1]$aInfo[$eScrDC ] = _WinAPI_GetDC(0)
[/autoit] [autoit][/autoit] [autoit]
$aInfo[$eMemDC ] = _WinAPI_CreateCompatibleDC($aInfo[$eScrDC])
$aInfo[$eBitmap ] = _WinAPI_CreateCompatibleBitmap($aInfo[$eScrDC], $iWidth, $iHeight)
_WinAPI_SelectObject($aInfo[$eMemDC], $aInfo[$eBitmap])
$aInfo[$eWidth ] = $iWidth
$aInfo[$eHeight ] = $iHeight
$aInfo[$eGraphic] = _GDIPlus_GraphicsCreateFromHDC($aInfo[$eMemDC])
_GDIPlus_GraphicsFillRect($aInfo[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
Return $aInfo
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Update layered window with resource information
; ===============================================================================================================================
Func ResourceSet($hGUI, ByRef $aInfo, $iAlpha=-1)
Local $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlendif $iAlpha = -1 then $iAlpha = $iOpacity
[/autoit] [autoit][/autoit] [autoit]
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize )
DllStructSetData($tSize, "X", $aInfo[$eWidth ])
DllStructSetData($tSize, "Y", $aInfo[$eHeight])
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend )
DllStructSetData($tBlend, "Alpha" , $iAlpha )
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $aInfo[$eScrDC], 0, $pSize, $aInfo[$eMemDC], $pSource, 0, $pBlend, $ULW_ALPHA)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Finalize resources for the digital time
; ===============================================================================================================================
Func TimeDone()
_GDIPlus_FontDispose ($aTime[$eFont ])
_GDIPlus_FontFamilyDispose ($aTime[$eFamily])
_GDIPlus_StringFormatDispose($aTime[$eFormat])
_GDIPlus_BrushDispose ($aTime[$eBrush ])
ResourceDone($aTime)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Draw the digital time
; ===============================================================================================================================
Func TimeDraw()
Local $sString, $aSizeif ($aLast[0][0] = $aCurr[0][0]) and ($aLast[0][1] = $aCurr[0][1]) then Return
[/autoit] [autoit][/autoit] [autoit]
$sString = StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC)
$aSize = _GDIPlus_GraphicsMeasureString($aTime[$eGraphic], $sString, $aTime[$eFont], $aTime[$eLayout], $aTime[$eFormat])
DllStructSetData($aTime[$eLayout], "X", $iRadius - (DllStructGetData($aSize[0], "Width") / 2))
DllStructSetData($aTime[$eLayout], "Y", $iRadius / 3)
_GDIPlus_GraphicsFillRect($aTime[$eGraphic], 0, 0, $iRadius * 2, $iRadius * 2)
_GDIPlus_GraphicsDrawStringEx($aTime[$eGraphic], $sString, $aTime[$eFont], $aTime[$eLayout], $aTime[$eFormat], $aTime[$eBrush])
ResourceSet($hTime, $aTime)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Initialize resources for the digital time
; ===============================================================================================================================
Func TimeInit()
$aTime = ResourceInit($iRadius * 2, $iRadius * 2)
$aTime[$eBrush ] = _GDIPlus_BrushCreateSolid(0xFF008080)
$aTime[$eFormat] = _GDIPlus_StringFormatCreate()
$aTime[$eFamily] = _GDIPlus_FontFamilyCreate("Arial")
$aTime[$eFont ] = _GDIPlus_FontCreate($aTime[$eFamily], 24, 1)
$aTime[$eLayout] = _GDIPlus_RectFCreate(0, 0, $iRadius * 2, 40)
EndFunc; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Convert time value to radians
; ===============================================================================================================================
Func TimeToRadians($sTimeType)
Switch $sTimeType
case "sec"
Return ($nPI / 2) - (@SEC * ($nPI / 30))
case "min"
Return ($nPI / 2) - (@MIN * ($nPI / 30)) - (Int(@SEC / 10) * ($nPI / 180))
case "hour"
Return ($nPI / 2) - (@HOUR * ($nPI / 6 )) - (@MIN / 12) * ($nPI / 30)
EndSwitch
EndFunc; ===============================================================================================================================
[/autoit]
; Handle the WM_NCHITTEST message so our window can be dragged
; ===============================================================================================================================
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
if $hWnd = $hDial then Return $HTCAPTION
EndFunc