So blieb nur das Handy. Ist aber sehr umständlich, weil das Display laufend abschaltet.
Hatte mein Windows Tablet dabei und versuchte dieses zu nutzen.
Eine vernünftige Uhrenanzeige, die auch ohne Brille gut lesbar ist, konnte ich aber nicht finden.
Auch ein fertiges Programm welches meine Ansprüche erfüllte fand ich auf die Schnelle nicht.
Deshalb begann ich ein eigenes Programm zu schreiben. Hier das Ergebnis
Weil ich auch in den Foren öfters nach Lösungen sucht und meistens auch finde,
möchte ich auch anderen helfen. Vielleicht können Teile des Programms auch anderen nützlich sein.
Denn nur auf diese Weise funktionieren diese Foren.
Das Programm hat eine Analog- und Digitalanzeige und eine Terminerinnerung.
Diese Anzeigen können beliebig Ein- oder Ausgeschaltet werden.
Die Größe und Position kann geändert werden und wird gespeichert.
Zu den Einstellungen mit der rechten Maustaste auf die Uhr oder das Taskleistensymbol klicken.
Linke Maustaste auf das Taskleistensymbol, Ein- oder Ausblenden.
Die Forenbeiträge von STARGÅTE und PureLust haben mir sehr geholfen, besten Dank hierfür.
  
  
Hier noch die Dateien.
Programm
Icon
Tondatei
EXE (64Bit)
Habe die Dateiverknüpfungen aktualisiert.
Code: Alles auswählen
;**************************************************
;* Programmname:      Uhr.pb                      *
;* Geschrieben von:   Krieger Armin               *
;* Erstellt am:       31.08.2016                  *
;* Letzte Änderung:   07.09.2016                  *
;* Funktion:          Uhr mit Erinnerung anzeigen *
;* PureBasic Version: V5.42                       *
;***************************************************************************************************************************
;* Benötigte Dateien:                                                                                                      *
;*  Uhr.ico  ->  Uhrensymbol für den SysTray (Ich verwende das Icon #266 aus der Datei 'C:\Windows\System32\shell32.dll')  *
;*  Uhr.wav  ->  Tondatei für die Erinnerung (Ich verwende eine Kopie von 'C:\Windows\Media\tada.wav')                     *
;***************************************************************************************************************************
;* Hilfreiche Informationen:                                                                                               *
;*  http://www.purebasic.fr/german/viewtopic.php?f=2&t=19283&hilit=bayerische+uhr&start=10                                 *
;*  http://www.purebasic.fr/english/viewtopic.php?f=12&t=43869                                                             *
;*  Besten Dank hierfür an STARGÅTE und PureLust                                                                           *
;***************************************************************************************************************************************************************************
;* API-Funktionen:                                                                                                                                                         *
;*  GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE)                                                             ->  Fensterstil ermitteln                                     *
;*  SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, STYLE_NEU)                                                  ->  Fensterstil neu setzen                                    *
;*  SetLayeredWindowAttributes_(WindowID(0), TRANSPARENTFARBE, TRANSPARENTWERT, #LWA_ALPHA | #LWA_COLORKEY)  ->  Durchsichtige Farbe festlegen und Transparenz einstellen  *
;*  GetAsyncKeyState_(#VK_LBUTTON)                                                                           ->  Prüfen ob linke Maustaste gedrückt ist                    *
;*  LoadCursor_(0, #IDC_SIZEALL)                                                                             ->  Systemcursor '#IDC_SIZEALL' laden                         *
;*  SetSystemCursor_(CURSOR_NEU, #OCR_NORMAL)                                                                ->  Systemcursor '#OCR_NORMAL' ändern                         *
;*  SystemParametersInfo_(#SPI_SETCURSORS, 0, 0, 0)                                                          ->  Systemcursor zurücksetzen                                 *
;***************************************************************************************************************************************************************************
EnableExplicit
;-* Konstanten *
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  #Durchsichtig     = $006D82
  #Randfarbe        = $E6E6E6
  #Rahmenfarbe      = $D2D2D2
  #HintergrundFarbe = $F5F5F5
  #SchriftFarbe     = $000000
  #AlarmFarbe       = $AAAAAA
  #AlarmFarbeEin    = $00FF00
  #AlarmFarbeAus    = $0000FF
  #InfoTextFarbe    = $FF0000
  #StundenFarbe     = $000000
  #MinutenFarbe     = $808080
  #SekundenFarbe    = $FF0000
  Enumeration                                                                  ;Schriften
    #Schrift1
    #Schrift2
    #Schrift3
    #Schrift4
  EndEnumeration
  Enumeration                                                                  ;Bilder
    #BildBlatt
    #BildZeiger
    #BildIcon
  EndEnumeration
  Enumeration                                                                  ;Gadgets
    #UhrZeiger
    #InfoZeitText
    #InfoZeitWert
    #InfoMeldungText
    #InfoMeldungWert
    #InfoWeiterText
    #InfoWeiterWert
    #InfoSchliessen
    #InfoAendern
  EndEnumeration
  Enumeration                                                                  ;Menü
    #MenueInfoEin
    #MenueInfoText
    #MenuePosition
    #MenueGroesse
    #MenueAnzAnalog
    #MenueAnzDigital
    #MenueAnzInfo
    #MenueRand
    #MenueRahmen
    #MenueHintergrund
    #MenueTransp_0
    #MenueTransp_1
    #MenueTransp_2
    #MenueTransp_3
    #MenueTransp_4
    #MenueTransp_5
    #MenueTransp_6
    #MenueTransp_7
    #MenueTransp_8
    #MenueTransp_9
    #MenueVordergrund
    #MenueAnklickbar
    #MenueAusblenden
    #MenueBeenden
  EndEnumeration
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;-* Globale Variablen anlegen *
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  OpenPreferences(GetCurrentDirectory() + "Uhr.ini")
    PreferenceGroup("Abmessungen")
      Global WinPosX.i            = ReadPreferenceLong  ("WinPosX"           , 10)
      Global WinPosY.i            = ReadPreferenceLong  ("WinPosY"           , 10)
      Global WinBreit.i           = ReadPreferenceLong  ("WinBreit"          , 300)
      Global WinHoch.i            = ReadPreferenceLong  ("WinHoch"           , 460)
    PreferenceGroup("Info")
      Global InfoStatus.i         = ReadPreferenceLong  ("InfoStatus"        , 0)
      Global InfoZeit.s           = ReadPreferenceString("InfoZeit"          , "12:00")
      Global InfoText.s           = ReadPreferenceString("InfoText"          , "-")
    PreferenceGroup("Ansicht")
      Global AnzeigeAnalog.i      = ReadPreferenceLong  ("AnzeigeAnalog"     , #True)
      Global AnzeigeDigital.i     = ReadPreferenceLong  ("AnzeigeDigital"    , #True)
      Global AnzeigeInfo.i        = ReadPreferenceLong  ("AnzeigeInfo"       , #True)
      Global AnzeigeRand.i        = ReadPreferenceLong  ("AnzeigeRand"       , #True)
      Global AnzeigeRahmen.i      = ReadPreferenceLong  ("AnzeigeRahmen"     , #True)
      Global AnzeigeHintergrund.i = ReadPreferenceLong  ("AnzeigeHintergrund", #True)
      Global AnzeigeTransparent.i = ReadPreferenceLong  ("AnzeigeTransparent", #False)
    PreferenceGroup("Verhalten")
      Global Dauerhaft.i          = ReadPreferenceLong  ("Dauerhaft"         , #True)
      Global Anklickbar.i         = ReadPreferenceLong  ("Anklickbar"        , #True)
      Global Minimieren.i         = ReadPreferenceLong  ("Minimieren"        , #False)
  ClosePreferences()
  Global ZeichenBreite.i, SchriftGroesse.i, MausStatus.i, Verschieben.i
  Global UhrX.i, UhrY.i, UhrR.i, ZeitX.i, ZeitY.i
  Global Schrift1.i, Schrift2.i, Schrift3.i, Schrift4.i
  Global AktZeit.i = Date(), SoundStatus.i, SoundAktiv.i
  Global FarbeRand        = #Randfarbe
  Global FarbeRahmen      = #Rahmenfarbe
  Global FarbeHintergrund = #HintergrundFarbe
  If AnzeigeRand        = #False : FarbeRand        = #Durchsichtig : EndIf
  If AnzeigeRahmen      = #False : FarbeRahmen      = #Durchsichtig : EndIf
  If AnzeigeHintergrund = #False : FarbeHintergrund = #Durchsichtig : EndIf
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;Einstellungen speichern
Procedure EinstellungenSpeichern()
  CreatePreferences(GetCurrentDirectory() + "Uhr.ini")
    PreferenceGroup("Abmessungen")
      WritePreferenceLong  ("WinPosX"           , WinPosX)
      WritePreferenceLong  ("WinPosY"           , WinPosY)
      WritePreferenceLong  ("WinBreit"          , WinBreit)
      WritePreferenceLong  ("WinHoch"           , WinHoch)
    PreferenceGroup("Info")
      WritePreferenceLong  ("InfoStatus"        , InfoStatus)
      WritePreferenceString("InfoZeit"          , InfoZeit)
      WritePreferenceString("InfoText"          , InfoText)
    PreferenceGroup("Ansicht")
      WritePreferenceLong  ("AnzeigeAnalog"     , AnzeigeAnalog)
      WritePreferenceLong  ("AnzeigeDigital"    , AnzeigeDigital)
      WritePreferenceLong  ("AnzeigeInfo"       , AnzeigeInfo)
      WritePreferenceLong  ("AnzeigeRand"       , AnzeigeRand)
      WritePreferenceLong  ("AnzeigeRahmen"     , AnzeigeRahmen)
      WritePreferenceLong  ("AnzeigeHintergrund", AnzeigeHintergrund)
      WritePreferenceLong  ("AnzeigeTransparent", AnzeigeTransparent)
    PreferenceGroup("Verhalten")
      WritePreferenceLong  ("Dauerhaft"         , Dauerhaft)
      WritePreferenceLong  ("Anklickbar"        , Anklickbar)
      WritePreferenceLong  ("Minimieren"        , Minimieren)
  ClosePreferences()
EndProcedure
;Unschärfe entfernen
Procedure Unschaerfe(XVon.i, XBis.i, YVon.i, YBis.i, FarbeOK.i, FarbeSetzen.i)
  Protected X.i, Y.i
  For X = XVon To XBis
    For Y = YVon To YBis
      If Point(X, Y) <> FarbeOK
        Plot(X, Y, FarbeSetzen)
      EndIf
    Next Y
  Next X
EndProcedure
;Bild erstellen und Schriftgroesse ermitteln
Procedure.i Schriftgroesse(Breit.i, Hoch.i, ZBreite.i)
  Protected ID.i, Groesse.i = 4, Breite.i
  If IsImage(#BildBlatt) : FreeImage(#BildBlatt) : EndIf
  If CreateImage(#BildBlatt, Breit, Hoch, 24, #Durchsichtig)
    Repeat
      ID = LoadFont(#PB_Any, "Arial", Groesse, #PB_Font_Bold)
      If StartDrawing(ImageOutput(#BildBlatt))
        DrawingFont(FontID(ID))
        Breite = TextWidth("00:00:00")
        StopDrawing()
      Else
        MessageRequester("Fehler - 'Schriftgroesse ermitteln'", "  Das Bild kann zum Bearbeiten nicht geöffnet werden.    ", 16)
        End
      EndIf
      FreeFont(ID)
      If Breite > ZBreite
        Groesse - 1
        Break
      Else
        Groesse + 1
        If Groesse > 500 : Break : EndIf
      EndIf
    ForEver
  EndIf
  If IsImage(#BildZeiger) : FreeImage(#BildZeiger) : EndIf
  CreateImage(#BildZeiger, Breit, Hoch, 24, #Durchsichtig)
  ProcedureReturn Groesse
EndProcedure
;Grundbild Uhr Zeichnen
Procedure UhrGrundBild(Breit.i, Hoch.i)
  Protected SchriftBreite.i, SchriftHoehe.i, Winkel.i, Radius.i, PosX.i, PosY.i, Text.i
  Protected AlarmX.i, AlarmY.i, AlarmA.i, AlarmS.i, Korrektur.i, X.i, Y.i
  If StartDrawing(ImageOutput(#BildBlatt))
    DrawingMode(#PB_2DDrawing_Transparent)
    FrontColor(#SchriftFarbe)
    DrawingFont(Schrift1)
    SchriftBreite = TextWidth("00:00:00")
    SchriftHoehe  = TextHeight("00:00:00")
    RoundBox(0, 0, Breit     , Hoch     , 20, 20, FarbeRand)
    RoundBox(4, 4, Breit -  8, Hoch -  8, 18, 18, FarbeRahmen)
    RoundBox(8, 8, Breit - 16, Hoch - 16, 16, 16, FarbeHintergrund)
    If AnzeigeInfo = #True
      AlarmX = Int((Breit - SchriftBreite) / 2)
      AlarmY = Hoch - SchriftHoehe - 10
      DrawingFont(Schrift1)
      If (AnzeigeAnalog = #True) Or (AnzeigeDigital = #True)
        Box(8, AlarmY - 6, Breit - 16, 4 , FarbeRahmen)
      EndIf
      DrawText  (AlarmX, AlarmY, InfoZeit, #AlarmFarbe, FarbeHintergrund)
      Unschaerfe(AlarmX, AlarmX + TextWidth(InfoZeit), AlarmY, AlarmY + TextHeight(InfoZeit), FarbeHintergrund, #AlarmFarbe)
      AlarmA = AlarmX + TextWidth("12:00:")
      DrawingFont(Schrift2)
      AlarmS = AlarmY + TextHeight("12:00:")
      DrawText  (AlarmA, AlarmY, "Info", #AlarmFarbe, FarbeHintergrund)
      Unschaerfe(AlarmA, AlarmA + TextWidth("Info"), AlarmY, AlarmY + TextHeight("Info"), FarbeHintergrund, #AlarmFarbe)
      If InfoStatus = #False
        DrawText  (AlarmA, AlarmS, "Aus  ", #AlarmFarbeAus, FarbeHintergrund)
        Unschaerfe(AlarmA, AlarmA + TextWidth("Aus  "), AlarmS, AlarmS + TextHeight("Aus  "), FarbeHintergrund, #AlarmFarbeAus)
      Else
        DrawText  (AlarmA, AlarmS, "Ein  ", #AlarmFarbeEin, FarbeHintergrund)
        Unschaerfe(AlarmA, AlarmA + TextWidth("Ein  "), AlarmS, AlarmS + TextHeight("Ein  "), FarbeHintergrund, #AlarmFarbeEin)
      EndIf
    EndIf
    If AnzeigeDigital = #True
      ZeitX = Int((Breit - SchriftBreite) / 2)
      ZeitY = Hoch - SchriftHoehe - 10
      If AnzeigeInfo = #True : ZeitY - SchriftHoehe - 8 : EndIf
      If AnzeigeAnalog = #True
        Box(8, ZeitY - 6, Breit - 16, 4, FarbeRahmen)
      EndIf
    EndIf
    If AnzeigeAnalog = #True
      UhrX = Int(Breit / 2)
      UhrY = Int(Hoch / 2)
      Korrektur = 0
      If AnzeigeInfo    = #True : Korrektur + SchriftHoehe + 8 : EndIf
      If AnzeigeDigital = #True : Korrektur + SchriftHoehe + 8 : EndIf
      If Korrektur <> 0     : UhrY - Int(Korrektur / 2)    : EndIf
      If UhrX < UhrY
        UhrR = UhrX - 20
      Else
        UhrR = UhrY - 20
      EndIf
      DrawingFont(Schrift3)
      Radius = Int(UhrR * 0.94)                                                ;1 Minuten Punkte
      For Winkel = -84 To 270 Step 6
        PosX = Radius * Cos(Winkel * #PI / 180) + UhrX
        PosY = Radius * Sin(Winkel * #PI / 180) + UhrY
        Circle(PosX, PosY, Int(UhrR * 0.02), #SchriftFarbe)
      Next
      For Winkel = -60 To 270 Step 30                                          ;15 Minuten Striche
        For Radius = Int(UhrR * 0.90) To Int(UhrR * 0.98)
          PosX = Radius * Cos(Winkel * #PI / 180) + UhrX
          PosY = Radius * Sin(Winkel * #PI / 180) + UhrY
          Circle(PosX, PosY, Int(UhrR * 0.02), #SchriftFarbe)
        Next
        Radius = Int(UhrR * 0.75)                                              ;15 Minuten Beschriftung
        PosX = Radius * Cos(Winkel * #PI / 180) + UhrX
        PosY = Radius * Sin(Winkel * #PI / 180) + UhrY
        Text + 1
        X = PosX - (TextWidth(Str(Text)) / 2)
        Y = PosY - (TextHeight(Str(Text)) / 2)
        DrawText(X, Y, Str(Text), #SchriftFarbe, FarbeHintergrund)
        Unschaerfe(X, X + TextWidth(Str(Text)), Y, Y + TextHeight(Str(Text)), FarbeHintergrund, #SchriftFarbe)
      Next
    EndIf
    StopDrawing()
  Else
    MessageRequester("Fehler - 'Grundbild Uhr Zeichnen'", "  Das Bild kann zum Bearbeiten nicht geöffnet werden.    ", 16)
    End
  EndIf
EndProcedure
;Zeitanzeige Erneuern
Procedure Zeitanzeige(ZeitWert.i)
  Protected Radius.i, Laenge.i, PosZ.f, PosX.i, PosY.i
  If StartDrawing(ImageOutput(#BildZeiger))
    DrawingMode(#PB_2DDrawing_Transparent)
    FrontColor(#SchriftFarbe)
    DrawingFont(Schrift1)
    DrawImage(ImageID(#BildBlatt),0 ,0)
    If AnzeigeDigital = #True
      DrawText(ZeitX, ZeitY, FormatDate("%hh:%ii:%ss", ZeitWert), #SchriftFarbe, FarbeHintergrund)
      Unschaerfe(ZeitX, ZeitX + TextWidth("00:00:00"), ZeitY, ZeitY + TextHeight("00:00:00"), FarbeHintergrund, #SchriftFarbe)
    EndIf
    If AnzeigeAnalog = #True
      Radius = Int(UhrR * 0.06)                                                ;Stundenzeiger
      For Laenge = 0 To Int(UhrR * 0.50)
        PosZ = Hour(ZeitWert) * 5 + Minute(ZeitWert) / 60 * 5
        PosX = Sin(PosZ / 30 * #PI) * Laenge + UhrX
        PosY = -Cos(PosZ / 30 * #PI) * Laenge + UhrY
        Circle(PosX, PosY, Radius, #StundenFarbe)
      Next
      Radius = Int(UhrR * 0.04)                                                ;Minutenzeiger
      For Laenge = 0 To Int(UhrR * 0.75)
        PosZ = Minute(ZeitWert)
        PosX = Sin(PosZ / 30 * #PI) * Laenge + UhrX
        PosY = -Cos(PosZ / 30 * #PI) * Laenge + UhrY
        Circle(PosX, PosY, Radius, #MinutenFarbe)
      Next
      Radius = Int(UhrR * 0.01)                                                ;Sekundenzeiger
      For Laenge = Int(0 - (UhrR * 0.15)) To Int(UhrR * 0.90)
        PosZ = Second(ZeitWert)
        PosX = Sin(PosZ / 30 * #PI) * Laenge + UhrX
        PosY = -Cos(PosZ / 30 * #PI) * Laenge + UhrY
        Circle(PosX, PosY, Radius, #SekundenFarbe)
      Next
    EndIf
    StopDrawing()
  Else
    MessageRequester("Fehler - 'Zeitanzeige Erneuern'", "  Das Bild kann zum Bearbeiten nicht geöffnet werden.    ", 16)
    End
  EndIf
EndProcedure
;Grundeinstellung
Procedure Grundeinstellung()
  ZeichenBreite  = WinBreit - 52
  SchriftGroesse = Schriftgroesse (WinBreit, WinHoch, ZeichenBreite)
  Schrift1       = LoadFont(#Schrift1, "Arial", SchriftGroesse, #PB_Font_Bold)
  Schrift2       = LoadFont(#Schrift2, "Arial", Int(SchriftGroesse / 2))
  Schrift3       = LoadFont(#Schrift3, "Arial", Int(SchriftGroesse / 3))
  Schrift4       = LoadFont(#Schrift4, "Arial", 30, #PB_Font_Bold)
  UhrGrundBild(WinBreit, WinHoch)
  Zeitanzeige(AktZeit)
EndProcedure
;-* Programmstart *
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  SoundStatus    = InitSound()
  If SoundStatus <> #False
    SoundStatus  = CatchSound(0, ?Tondatei)
  EndIf
  Grundeinstellung()
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;* Hauptfenster mit Eingabeschleife *
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  Define i.i, Wert.i, Event.i
  Define AltMausX.i, AltMausY.i, NeuMausX.i, NeuMausY.i, BewegungX.i, BewegungY.i
  Define WinVonX.i, WinBisX.i, WinVonY.i, WinBisY.i
  If OpenWindow(0, WinPosX, WinPosY, WinBreit, WinHoch, "Uhr v1.0", #PB_Window_BorderLess)
    SetWindowColor(0, #Durchsichtig)
    HideWindow(0, #True)
    For i = 0 To 9
      If ((AnzeigeTransparent >> i) & 1) = #True
        Wert = i * 10
        Break
      EndIf
    Next i
    SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED | #WS_EX_TOOLWINDOW)
    SetLayeredWindowAttributes_(WindowID(0), #Durchsichtig, 255 * (100 - Wert) / 100, #LWA_ALPHA | #LWA_COLORKEY)
    HideWindow(0, #False)
    ImageGadget(#UhrZeiger, 0, 0, WinBreit, WinHoch, ImageID(#BildZeiger))
    StickyWindow(0, Dauerhaft)
    HideWindow(0, Minimieren)
    AddSysTrayIcon(0, WindowID(0), CatchImage(#BildIcon, ?Icon))
    If CreatePopupMenu(0)                                                      ;Popup-Menü erstellen
      MenuItem(#MenueInfoEin    , "Info Ein/Aus")
      MenuItem(#MenueInfoText   , "Info ändern")
      MenuBar()
      MenuItem(#MenuePosition   , "Position ändern")
      MenuItem(#MenueGroesse    , "Größe ändern")
      MenuBar()
      MenuItem(#MenueAnzAnalog  , "Analoganzeige")
      MenuItem(#MenueAnzDigital , "Digitalanzeige")
      MenuItem(#MenueAnzInfo    , "Infoanzeige")
      MenuBar()
      MenuItem(#MenueRand       , "Rand anzeigen")
      MenuItem(#MenueRahmen     , "Rahmen anzeigen")
      MenuItem(#MenueHintergrund, "Hintergrund anzeigen")
      MenuBar()
      OpenSubMenu("Transparent anzeigen")
        MenuItem(#MenueTransp_0, "Transparenz Aus")
        MenuItem(#MenueTransp_1, "Transparenz 10%")
        MenuItem(#MenueTransp_2, "Transparenz 20%")
        MenuItem(#MenueTransp_3, "Transparenz 30%")
        MenuItem(#MenueTransp_4, "Transparenz 40%")
        MenuItem(#MenueTransp_5, "Transparenz 50%")
        MenuItem(#MenueTransp_6, "Transparenz 60%")
        MenuItem(#MenueTransp_7, "Transparenz 70%")
        MenuItem(#MenueTransp_8, "Transparenz 80%")
        MenuItem(#MenueTransp_9, "Transparenz 90%")
      CloseSubMenu()
      MenuBar()
      MenuItem(#MenueVordergrund, "Im Vordergrund")
      MenuItem(#MenueAnklickbar , "Anklickbar")
      MenuItem(#MenueAusblenden , "Ausblenden")
      MenuBar()
      MenuItem(#MenueBeenden    , "Beenden")
      SetMenuItemState(0, #MenueInfoEin    , InfoStatus)                       ;Popup-Menü Grundeinstellung
      SetMenuItemState(0, #MenueAnzAnalog  , AnzeigeAnalog)
      SetMenuItemState(0, #MenueAnzDigital , AnzeigeDigital)
      SetMenuItemState(0, #MenueAnzInfo    , AnzeigeInfo)
      SetMenuItemState(0, #MenueRand       , AnzeigeRand)
      SetMenuItemState(0, #MenueRahmen     , AnzeigeRahmen)
      SetMenuItemState(0, #MenueHintergrund, AnzeigeHintergrund)
      SetMenuItemState(0, #MenueTransp_0   , Bool((AnzeigeTransparent >> 0) & 1))
      SetMenuItemState(0, #MenueTransp_1   , Bool((AnzeigeTransparent >> 1) & 1))
      SetMenuItemState(0, #MenueTransp_2   , Bool((AnzeigeTransparent >> 2) & 1))
      SetMenuItemState(0, #MenueTransp_3   , Bool((AnzeigeTransparent >> 3) & 1))
      SetMenuItemState(0, #MenueTransp_4   , Bool((AnzeigeTransparent >> 4) & 1))
      SetMenuItemState(0, #MenueTransp_5   , Bool((AnzeigeTransparent >> 5) & 1))
      SetMenuItemState(0, #MenueTransp_6   , Bool((AnzeigeTransparent >> 6) & 1))
      SetMenuItemState(0, #MenueTransp_7   , Bool((AnzeigeTransparent >> 7) & 1))
      SetMenuItemState(0, #MenueTransp_8   , Bool((AnzeigeTransparent >> 8) & 1))
      SetMenuItemState(0, #MenueTransp_9   , Bool((AnzeigeTransparent >> 9) & 1))
      SetMenuItemState(0, #MenueVordergrund, Dauerhaft)
      SetMenuItemState(0, #MenueAnklickbar , Anklickbar)
      SetMenuItemState(0, #MenueAusblenden , Minimieren)
    EndIf
    Repeat
      Event = WaitWindowEvent(100)
      If AktZeit <> Date()                                                     ;Zeitanzeige aktualisieren
        AktZeit = Date()
        Zeitanzeige(AktZeit)
        SetGadgetState(#UhrZeiger, ImageID(#BildZeiger))
      EndIf
      If InfoStatus = #True                                                    ;Info anzeigen
        If InfoZeit = FormatDate("%hh:%ii", AktZeit)
          InfoStatus = #False
          If OpenWindow(1, 0, 0, 965, 370, "Information anzeigen", #PB_Window_Tool | #PB_Window_ScreenCentered, 0)
            SetGadgetFont(#PB_Default, Schrift4)
            TextGadget    (#InfoZeitText   ,  10,  10, 240,  58, "Zeit:")
            TextGadget    (#InfoZeitWert   , 250,  10, 200,  58, InfoZeit)
            SetGadgetColor(#InfoZeitWert   , #PB_Gadget_FrontColor, #InfoTextFarbe)
            TextGadget    (#InfoMeldungText,  10,  75, 240,  58, "Text:")
            TextGadget    (#InfoMeldungWert, 250,  75, 700, 108, InfoText)
            SetGadgetColor(#InfoMeldungWert, #PB_Gadget_FrontColor, #InfoTextFarbe)
            TextGadget    (#InfoWeiterText ,  10, 190, 240,  58, "Fortfahren:")
            ComboBoxGadget(#InfoWeiterWert , 250, 190, 700,  58)
            AddGadgetItem (#InfoWeiterWert ,   0, "Keine Wiederholung, Info beenden")
            AddGadgetItem (#InfoWeiterWert ,   1, "In 5 Minuten wiederholen")
            AddGadgetItem (#InfoWeiterWert ,   2, "In 10 Minuten wiederholen")
            AddGadgetItem (#InfoWeiterWert ,   3, "In 15 Minuten wiederholen")
            AddGadgetItem (#InfoWeiterWert ,   4, "In 30 Minuten wiederholen")
            SetGadgetState(#InfoWeiterWert ,   0)
            ButtonGadget  (#InfoSchliessen , 300, 290, 365,  70, "Übernehmen")
            StickyWindow(1, #True)
            SoundAktiv = #True
          EndIf
        EndIf
      EndIf
      If (SoundAktiv > #False) And (SoundStatus <> #False)                     ;Infoton abspielen
        If Mod(Second(AktZeit), 30) = 0
          If SoundAktiv = #True
            PlaySound(0, #PB_Sound_MultiChannel, 80)
            SoundAktiv = 2
          EndIf
        Else
          SoundAktiv = #True
        EndIf
      EndIf
      If Verschieben <> #False                                                 ;Fenster verschieben oder Größe ändern
        AltMausX  = NeuMausX
        AltMausY  = NeuMausY
        NeuMausX  = DesktopMouseX()
        NeuMausY  = DesktopMouseY()
        BewegungX = AltMausX - NeuMausX
        BewegungY = AltMausY - NeuMausY
        WinVonX   = WindowX(0)
        WinBisX   = WinVonX + WindowWidth(0)
        WinVonY   = WindowY(0)
        WinBisY   = WinVonY + WindowHeight(0)
        If GetAsyncKeyState_(#VK_LBUTTON)                                      ;Linke Maustaste drücken
          If (NeuMausX > WinVonX) And (NeuMausX < WinBisX) And (NeuMausY > WinVonY) And (NeuMausY < WinBisY)
            MausStatus + 1
            If Verschieben = #True                                             ;Fenster verschieben
              ResizeWindow(0, WinVonX - BewegungX, WinVonY - BewegungY, #PB_Ignore, #PB_Ignore)
            Else                                                               ;Fenster Größe ändern
              WinBreit = WindowWidth(0)  - BewegungX
              WinHoch  = WindowHeight(0) - BewegungY
              ResizeWindow(0, #PB_Ignore, #PB_Ignore, WinBreit, WinHoch)
              Grundeinstellung()
            EndIf
          EndIf
        Else                                                                   ;Linke Maustaste loslassen
          If MausStatus > 3
            MausStatus = #False
            Verschieben = #False
            SystemParametersInfo_(#SPI_SETCURSORS, 0, 0, 0)
            WinPosX  = WindowX(0)
            WinPosY  = WindowY(0)
            WinBreit = WindowWidth(0)
            WinHoch  = WindowHeight(0)
            EinstellungenSpeichern()
            ResizeWindow(0, WinPosX, WinPosY, WinBreit, WinHoch)
            Grundeinstellung()
          EndIf
        EndIf
      Else                                                                     ;Standardabfragen
        Select Event
          Case #PB_Event_Gadget
            Select EventGadget()
              Case #UhrZeiger                                                  ;Popup-Menü anzeigen
                If EventType() = #PB_EventType_RightClick
                  DisplayPopupMenu(0, WindowID(0))
                EndIf
              Case #InfoSchliessen                                             ;Info Anzeige wurde geschlossen
                Select GetGadgetState(#InfoWeiterWert)
                  Case 1 : InfoStatus = #True : InfoZeit = FormatDate("%hh:%ii", AddDate(AktZeit, #PB_Date_Minute, 5))
                  Case 2 : InfoStatus = #True : InfoZeit = FormatDate("%hh:%ii", AddDate(AktZeit, #PB_Date_Minute, 10))
                  Case 3 : InfoStatus = #True : InfoZeit = FormatDate("%hh:%ii", AddDate(AktZeit, #PB_Date_Minute, 15))
                  Case 4 : InfoStatus = #True : InfoZeit = FormatDate("%hh:%ii", AddDate(AktZeit, #PB_Date_Minute, 30))
                EndSelect
                CloseWindow(1)
                SoundAktiv = #False
                SetMenuItemState(0, #MenueInfoEin, InfoStatus)
                EinstellungenSpeichern()
                Grundeinstellung()
              Case #InfoAendern                                                ;Info Änderung wurde geschlossen
                InfoStatus = #True
                InfoZeit   = GetGadgetText(#InfoZeitWert)
                InfoText   = GetGadgetText(#InfoMeldungWert)
                InfoText   = ReplaceString(InfoText, #CRLF$, ", ")
                CloseWindow(1)
                SetMenuItemState(0, #MenueInfoEin, InfoStatus)
                EinstellungenSpeichern()
                Grundeinstellung()
            EndSelect
          Case #PB_Event_Menu
            Select EventMenu()
              Case #MenueBeenden                                               ;Programm schliessen
                Break
              Case #MenueInfoEin                                               ;Info Ein/Aus
                InfoStatus = Bool(Not InfoStatus)
                SetMenuItemState(0, #MenueInfoEin, InfoStatus)
                EinstellungenSpeichern()
                Grundeinstellung()
              Case #MenueInfoText                                              ;Info Text ändern
                If OpenWindow(1, 0, 0, 835, 305, "Information ändern", #PB_Window_Tool | #PB_Window_ScreenCentered, 0)
                  SetGadgetFont(#PB_Default, Schrift4)
                  TextGadget    (#InfoZeitText    ,  10,  10, 110,  58, "Zeit:")
                  DateGadget    (#InfoZeitWert    , 120, 10, 200, 58, "%hh:%ii", ParseDate("%hh:%ii", InfoZeit), #PB_Date_UpDown)
                  SetGadgetColor(#InfoZeitWert    , #PB_Gadget_FrontColor, #InfoTextFarbe)
                  TextGadget    (#InfoMeldungText ,  10,  75, 110,  58, "Text:")
                  EditorGadget  (#InfoMeldungWert , 120,  75, 700, 108, #PB_Editor_WordWrap)
                  SetGadgetText (#InfoMeldungWert , InfoText)
                  SetGadgetColor(#InfoMeldungWert , #PB_Gadget_FrontColor, #InfoTextFarbe)
                  ButtonGadget  (#InfoAendern     , 235, 225, 365,  70, "Übernehmen")
                  StickyWindow(1, #True)
                EndIf
              Case #MenuePosition                                              ;Fenster Position ändern
                Verschieben = #True
                NeuMausX = DesktopMouseX()
                NeuMausY = DesktopMouseY()
                SetSystemCursor_(LoadCursor_(0, #IDC_SIZEALL), #OCR_NORMAL)
              Case #MenueGroesse                                               ;Fenster Größe ändern
                Verschieben = 2
                NeuMausX = DesktopMouseX()
                NeuMausY = DesktopMouseY()
                SetSystemCursor_(LoadCursor_(0, #IDC_SIZEALL), #OCR_NORMAL)
              Case #MenueAnzAnalog                                             ;Analoganzeige Ein/Aus
                AnzeigeAnalog = Bool(Not AnzeigeAnalog)
                SetMenuItemState(0, #MenueAnzAnalog, AnzeigeAnalog)
                EinstellungenSpeichern()
                Grundeinstellung()
              Case #MenueAnzDigital                                            ;Digitalanzeige Ein/Aus
                AnzeigeDigital = Bool(Not AnzeigeDigital)
                SetMenuItemState(0, #MenueAnzDigital, AnzeigeDigital)
                EinstellungenSpeichern()
                Grundeinstellung()
              Case #MenueAnzInfo                                               ;Infoanzeige Ein/Aus
                AnzeigeInfo = Bool(Not AnzeigeInfo)
                SetMenuItemState(0, #MenueAnzInfo, AnzeigeInfo)
                EinstellungenSpeichern()
                Grundeinstellung()
              Case #MenueRand                                                  ;Rand durchsichtig Ein/Aus
                AnzeigeRand = Bool(Not AnzeigeRand)
                SetMenuItemState(0, #MenueRand, AnzeigeRand)
                EinstellungenSpeichern()
                If AnzeigeRand = #False
                  FarbeRand = #Durchsichtig
                Else
                  FarbeRand = #Randfarbe
                EndIf
                Grundeinstellung()
              Case #MenueRahmen                                                ;Rahmen durchsichtig Ein/Aus
                AnzeigeRahmen = Bool(Not AnzeigeRahmen)
                SetMenuItemState(0, #MenueRahmen, AnzeigeRahmen)
                EinstellungenSpeichern()
                If AnzeigeRahmen = #False
                  FarbeRahmen = #Durchsichtig
                Else
                  FarbeRahmen = #Rahmenfarbe
                EndIf
                Grundeinstellung()
              Case #MenueHintergrund                                           ;Hintergrund durchsichtig Ein/Aus
                AnzeigeHintergrund = Bool(Not AnzeigeHintergrund)
                SetMenuItemState(0, #MenueHintergrund, AnzeigeHintergrund)
                EinstellungenSpeichern()
                If AnzeigeHintergrund = #False
                  FarbeHintergrund = #Durchsichtig
                Else
                  FarbeHintergrund = #HintergrundFarbe
                EndIf
                Grundeinstellung()
              Case #MenueTransp_0 To #MenueTransp_9                            ;Fenster Transparent anzeigen
                Select EventMenu()
                  Case #MenueTransp_0 : AnzeigeTransparent = 1   : Wert = 0
                  Case #MenueTransp_1 : AnzeigeTransparent = 2   : Wert = 10
                  Case #MenueTransp_2 : AnzeigeTransparent = 4   : Wert = 20
                  Case #MenueTransp_3 : AnzeigeTransparent = 8   : Wert = 30
                  Case #MenueTransp_4 : AnzeigeTransparent = 16  : Wert = 40
                  Case #MenueTransp_5 : AnzeigeTransparent = 32  : Wert = 50
                  Case #MenueTransp_6 : AnzeigeTransparent = 64  : Wert = 60
                  Case #MenueTransp_7 : AnzeigeTransparent = 128 : Wert = 70
                  Case #MenueTransp_8 : AnzeigeTransparent = 256 : Wert = 80
                  Case #MenueTransp_9 : AnzeigeTransparent = 512 : Wert = 90
                EndSelect
                SetMenuItemState(0, #MenueTransp_0, Bool((AnzeigeTransparent >> 0) & 1))
                SetMenuItemState(0, #MenueTransp_1, Bool((AnzeigeTransparent >> 1) & 1))
                SetMenuItemState(0, #MenueTransp_2, Bool((AnzeigeTransparent >> 2) & 1))
                SetMenuItemState(0, #MenueTransp_3, Bool((AnzeigeTransparent >> 3) & 1))
                SetMenuItemState(0, #MenueTransp_4, Bool((AnzeigeTransparent >> 4) & 1))
                SetMenuItemState(0, #MenueTransp_5, Bool((AnzeigeTransparent >> 5) & 1))
                SetMenuItemState(0, #MenueTransp_6, Bool((AnzeigeTransparent >> 6) & 1))
                SetMenuItemState(0, #MenueTransp_7, Bool((AnzeigeTransparent >> 7) & 1))
                SetMenuItemState(0, #MenueTransp_8, Bool((AnzeigeTransparent >> 8) & 1))
                SetMenuItemState(0, #MenueTransp_9, Bool((AnzeigeTransparent >> 9) & 1))
                EinstellungenSpeichern()
                SetLayeredWindowAttributes_(WindowID(0), #Durchsichtig, 255 * (100 - Wert) / 100, #LWA_ALPHA | #LWA_COLORKEY)
              Case #MenueVordergrund                                           ;Fenster im Vordergrund halten
                Dauerhaft = Bool(Not Dauerhaft)
                SetMenuItemState(0, #MenueVordergrund, Dauerhaft)
                EinstellungenSpeichern()
                StickyWindow(0, Dauerhaft)
              Case #MenueAnklickbar                                            ;Fenster Anklickbar
                Anklickbar = Bool(Not Anklickbar)
                SetMenuItemState(0, #MenueAnklickbar, Anklickbar)
                EinstellungenSpeichern()
                If Anklickbar = #False
                  SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_TRANSPARENT)
                Else
                  SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE) & ~#WS_EX_TRANSPARENT)
                EndIf
              Case #MenueAusblenden                                            ;Fenster Minimieren
                Minimieren = Bool(Not Minimieren)
                SetMenuItemState(0, #MenueAusblenden, Minimieren)
                EinstellungenSpeichern()
                HideWindow(0, Minimieren)
            EndSelect
          Case #PB_Event_SysTray
            Select EventType()
              Case #PB_EventType_LeftClick                                     ;Fenster Minimieren
                Minimieren = Bool(Not Minimieren)
                SetMenuItemState(0, #MenueAusblenden, Minimieren)
                EinstellungenSpeichern()
                HideWindow(0, Minimieren)
              Case #PB_EventType_RightClick                                    ;Popup-Menü anzeigen
                DisplayPopupMenu(0, WindowID(0))
            EndSelect
        EndSelect
      EndIf
    ForEver
  EndIf
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;-* Programmende *
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  FreeFont (#PB_All)
  FreeImage(#PB_All)
  FreeSound(#PB_All)
  End
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;-* Dateien *
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DataSection
  Tondatei:
    IncludeBinary "Uhr.wav"
  Icon:
    IncludeBinary "Uhr.ico"
EndDataSection
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

