1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. name22

Beiträge von name22

  • Warten auf Informationen

    • name22
    • 27. Februar 2010 um 21:47

    Man könnte auch in einem Programm mit Func OnAutoItExit() eine Umgebungsvariable setzen und dann in dem anderen diese überprüfen.

  • GDIPlus Text spiegeln

    • name22
    • 27. Februar 2010 um 18:48

    Funktioniert :thumbup:

  • FileMove umbenennen geht nicht

    • name22
    • 27. Februar 2010 um 18:43
    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.

  • GDIPlus Text spiegeln

    • name22
    • 27. Februar 2010 um 17:35

    Du musst theorethisch nur von der Grafik mit dem Text eine Bitmap erstellen. Das Problem ist, dass ich bei der Funktion nicht ganz durchblicke. :D

  • Warten auf Informationen

    • name22
    • 27. Februar 2010 um 14:23

    ProcessExists() ?

  • GDIPlus Text spiegeln

    • name22
    • 26. Februar 2010 um 21:27

    Meinst du das hier?

  • mit gdiplus einen Blätter effekt machen

    • name22
    • 26. Februar 2010 um 21:07

    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()

  • mit gdiplus einen Blätter effekt machen

    • name22
    • 26. Februar 2010 um 20:07

    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>
    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Umblättertest", 400, 400)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    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)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hPen = _GDIPlus_PenCreate(0xFF000000, 3)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsFillEllipse($hGraphics, 350, 350, 50, 50)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Umblaettern()
    $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 ;==>_Umblaettern

    [/autoit]

    Einfach auf den Kreis klicken.

  • Persönliches Telefonbuch

    • name22
    • 26. Februar 2010 um 12:03

    Funktioniert recht gut, aber wenn ich z.B. "Franz" als Kontakt abspeichere und dann nach "franz" suche ist "franz" plötzlich kleingeschrieben.

  • GDI+ Notitzzettel

    • name22
    • 26. Februar 2010 um 11:59

    Naja immerhin ein Anfang :rolleyes:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Clear")

    [/autoit] [autoit][/autoit] [autoit]

    Global $GUIColorBG = 0xFFFFFFFF
    Global $LineColor = 0xFF000000
    Global $LineWidth = 6

    [/autoit] [autoit][/autoit] [autoit]

    $TestGUI = GUICreate("Test", 400, 400)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($TestGUI)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
    _GDIPlus_GraphicsClear($hGraphics, $GUIColorBG)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hBrush = _GDIPlus_BrushCreateSolid($LineColor)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _DrawFreehand($MousePosX, $MousePosY)
    _GDIPlus_GraphicsFillEllipse($hGraphics, $MousePosX - $LineWidth / 2, $MousePosY - $LineWidth / 2, $LineWidth, $LineWidth, $hBrush)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Clear()
    _GDIPlus_GraphicsClear($hGraphics, $GUIColorBG)
    EndFunc

    [/autoit]

    Edit: Und hier die bessere Version von Oscar

    Spoiler anzeigen
    [autoit]

    #include<Misc.au3>
    #include<GuiConstantsEx.au3>
    #include<GDIPlus.au3>
    Opt('MouseCoordMode', 2)
    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()
    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

    [/autoit]
  • Warten auf Informationen

    • name22
    • 26. Februar 2010 um 11:29

    Was ist mit EnvSet und EnvGet?

  • GUICtrlListView

    • name22
    • 26. Februar 2010 um 11:18

    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.

  • Array2D Sortieren

    • name22
    • 25. Februar 2010 um 20:23

    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.

  • FileReadLine bei .ini

    • name22
    • 25. Februar 2010 um 20:16

    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?

  • Zeit

    • name22
    • 25. Februar 2010 um 16:22

    Das kommt aufs selbe raus. Mit dem "&" Operator wird ein String an einen anderen angehängt, nicht addiert.

  • AutoIt Inputbox per email schicken

    • name22
    • 25. Februar 2010 um 14:45

    Rein interessehalber: Zu welchem Zweck?

  • Zeit

    • name22
    • 24. Februar 2010 um 23:27

    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.

  • Zeit

    • name22
    • 24. Februar 2010 um 13:51

    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.

  • ZKeyboard

    • name22
    • 19. Februar 2010 um 03:01

    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.

  • Zeigeruhr

    • name22
    • 19. Februar 2010 um 02:40

    Schau dir doch mal das Beispielscript aus dem Autoit Ordner an:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MustDeclareVars", 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; ===============================================================================================================================
    ; Description ...: Simple clock using layered windows
    ; Author ........: Paul Campbell (PaulIA)
    ; Notes .........:
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    ; ===============================================================================================================================
    ; Global constants
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $iCenter = 200
    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.02

    [/autoit] [autoit][/autoit] [autoit]

    Global 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]

    ; ===============================================================================================================================
    ; Global variables
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Global $hDial, $hTime, $hHour, $hMin, $hSec, $hDot, $aTime, $aHour, $aMin, $aSec, $aCurr[3][2], $aLast[3][2]

    [/autoit] [autoit][/autoit] [autoit]

    ; ===============================================================================================================================
    ; Main
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    ClockInit()
    DialDraw ()
    Draw ()
    DotDraw ()
    ClockLoop()
    ClockDone()

    [/autoit] [autoit][/autoit] [autoit]

    ; ===============================================================================================================================
    ; Finalize clock
    ; ===============================================================================================================================
    Func ClockDone()
    ; Finalize GDI+ resources
    TimeDone()
    HourDone()
    MinDone ()
    SecDone ()

    [/autoit] [autoit][/autoit] [autoit]

    ; Finalize GDI+ library
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; ===============================================================================================================================
    ; Initialize clock
    ; ===============================================================================================================================
    Func ClockInit()
    Local $iX, $iY

    [/autoit] [autoit][/autoit] [autoit]

    ; Calculate the dial frame caption size
    $iX = -(_WinAPI_GetSystemMetrics($SM_CXFRAME))
    $iY = -(_WinAPI_GetSystemMetrics($SM_CYCAPTION) + _WinAPI_GetSystemMetrics($SM_CYFRAME))

    [/autoit] [autoit][/autoit] [autoit]

    ; Allocate the window resources
    $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()

    [/autoit] [autoit][/autoit] [autoit]

    ; Initialize GDI+ library
    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    ; Initialize GDI+ resources
    TimeInit()
    HourInit()
    MinInit ()
    SecInit ()

    [/autoit] [autoit][/autoit] [autoit]

    ; Hook non client hit test message so we can move the clock
    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

    [/autoit] [autoit][/autoit] [autoit]

    $aDot = ResourceInit($iRadius * 2, $iRadius * 2)
    _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

    [/autoit] [autoit][/autoit] [autoit]

    ; Draw time elements
    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

    [/autoit] [autoit][/autoit] [autoit]

    $aDial = ResourceInit($iRadius * 2, $iRadius * 2)
    $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)

    [/autoit] [autoit][/autoit] [autoit]

    ResourceSet ($hDial, $aDial)
    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, 8)
    _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, 8)
    _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]

    [/autoit] [autoit][/autoit] [autoit]

    $aInfo[$eScrDC ] = _WinAPI_GetDC(0)
    $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, $tBlend

    [/autoit] [autoit][/autoit] [autoit]

    if $iAlpha = -1 then $iAlpha = $iOpacity
    $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, $aSize

    [/autoit] [autoit][/autoit] [autoit]

    if ($aLast[0][0] = $aCurr[0][0]) and ($aLast[0][1] = $aCurr[0][1]) then Return
    $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] [autoit][/autoit] [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

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™