Einfaches Ausgabe-Fenster ala ToolTip, aber...

  • 2 Verbesserungen: Bei WinGetPos $hGUI statt $sTitle und Schatten nicht mehr klickbar :)

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon ; Trayicon erstmal verstecken
    #include<EditConstants.au3>
    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
    Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
    Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen

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

    $sTitle = 'Extended Tooltip'
    $BgColor = 0xFFFFDF ; Hintergrundfarbe
    $ShColor = 0x666666 ; Schattenfarbe
    $Width = 320 ; Breite des Fensters
    $Height = 200 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width-20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hText = GUICtrlCreateEdit('', 10, 45, $Width-20, $Height-60, BitOr($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left+6, $Top+6, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TRANSPARENT,$WS_EX_LAYERED)) ; Schattenfenster erzeugen
    ; Schatten sollte Click-through sein, also WS_EX_TRANSPARENT
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop('Shadow', '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    $msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    $msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'

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

    GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen

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

    While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Minimize()
    GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
    GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
    TraySetState(1) ; Trayicon anzeigen
    EndFunc

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

    Func _Restore()
    GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
    GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
    TraySetState(2) ; Trayicon verstecken
    EndFunc

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

    Func _ShadowMove()
    Local $pos = WinGetPos($hGui) ; Fensterposition der GUI holen
    WinMove('Shadow', '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
    EndFunc

    [/autoit]
  • Hallo Oscar,

    skyteddy: Das empfand ich mal als ganz interessante Aufgabe, weshalb ich mich mal rangesetzt habe. :)

    Ich habe mein Script noch um einen Schatten erweitert (skyteddy, jetzt sind alle Deine Bedingungen erfüllt). :)


    Du bist ne Wucht! Vielen herzlichen Dank! Das sieht super aus. Jow, das ist ne Basis, wo ich mich reinfuseln kann :) Sind die 2 Änderungen von progandy in deinem _exToolTip.au3 bereits eingebaut? Einen vermutlich leicht zu realisierenden Wunsch hab ich noch. Wie kann ich einen proportionalen Font einstellen?

    Update: Nein, die Änderungen von progandy sind noch nicht eingebaut. Aber jetzt bei mir :)

    Besten Dank und viele Grüße!
    R@iner

    • Offizieller Beitrag

    Ich hatte das bei dem _exToolTip.au3 nicht geändert, weil progandy ja das Script mit den Änderungen gepostet hat.

    Das mit dem Font: Du meinst wahrscheinlich einen Nicht-proportionalen (Monospaced) Font, oder?
    Weil 'Arial' ist ja proportional.

    Ok, hier dann das aktuelle Script:

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon ; Trayicon erstmal verstecken
    #include<EditConstants.au3>
    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
    Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
    Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen

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

    $sTitle = 'Extended Tooltip'
    $BgColor = 0xFFFFDF ; Hintergrundfarbe
    $ShColor = 0x666666 ; Schattenfarbe
    $Width = 320 ; Breite des Fensters
    $Height = 200 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW) ; keine Titelleiste, kein Button in der Taskleiste
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; [ESC] beendet das Programm

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; Transparentes Label zum verschieben des Fensters

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

    $hHead = GUICtrlCreateLabel('', 10, 10, $Width-20, 30, $SS_CENTER, $GUI_WS_EX_PARENTDRAG) ; Ein Label für die Überschrift
    GUICtrlSetFont(-1, 16, 600, 0, 'Arial') ; Größe und Zeichensatz der Überschrift setzen

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

    $hText = GUICtrlCreateEdit('', 10, 45, $Width-15, $Height-60, BitOr($WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY), $WS_EX_TRANSPARENT) ; ein scrollbares Editfeld erstellen
    GUICtrlSetFont(-1, 10, 400, 0, 'Courier New') ; Größe und Zeichensatz vom Editfeld setzen
    GUICtrlSetBkColor(-1, $BgColor) ; Hintergrundfarbe setzen
    GUICtrlSetState(-1, $GUI_ONTOP) ; Das Editfeld nach vorne holen, damit man scrollen kann

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left+6, $Top+6, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT)) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop($hShadow, '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($sTitle, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren

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

    $msg = 'In der großen Koalition sorgt der Zank um die Novelle des Gesetzes für das Bundeskriminalamt (BKA) weiter für Unmut. Vor allem Bundesinnenminister Wolfgang Schäuble ist nach wie vor erzürnt über den Widerstand auch aus SPD-regierten Ländern gegen die vom Bundestag abgesegnete Ausweitung der BKA-Befugnisse einschließlich einer Lizenz für heimliche Online-Durchsuchungen.'
    $msg &= '"Die Führung der Partei kann ihre Entscheidungen derzeit nicht durchsetzen", klagte der CDU-Minister dem "Focus" sein Leid. Der Koalitionspartner befinde sich in einer "akuten Krise". Eine "Handvoll Jusos" in Sachsen könne das Inkrafttreten eines jahrelang beratenen Gesetzes verzögern, schimpfte Schäuble gegen das erste Nein eines Landes gegen das Vorhaben, in dem die Sozialdemokraten mit an der Macht sind.'

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

    GUICtrlSetData($hHead, 'Streit um BKA-Gesetz') ; Überschrift anzeigen
    GUICtrlSetData($hText, $msg) ; denText anzeigen

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

    While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Minimize()
    GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
    GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
    TraySetState(1) ; Trayicon anzeigen
    EndFunc

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

    Func _Restore()
    GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
    GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
    TraySetState(2) ; Trayicon verstecken
    EndFunc

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

    Func _ShadowMove()
    Local $pos = WinGetPos($hGui) ; Fensterposition der GUI holen
    WinMove($hShadow, '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
    EndFunc

    [/autoit]
  • Hallo Oscar,

    Das mit dem Font: Du meinst wahrscheinlich einen Nicht-proportionalen (Monospaced) Font, oder?
    Weil 'Arial' ist ja proportional.


    argl, ja klar :( Danke für die Korrektur und das überarbeitete Script!

    Mit deinen Kommentaren darin schaff ich jetzt gewiß den Rest alleine. Wenn nicht, dann frag ich nochmal.

    Nochmals besten Dank und noch nen schönen Sonntag!
    R@iner

    PS: Wie kann ich den Status des Threads von "Offen" auf "Gelöst" umändern? Ich hab jetzt in der Hilfe geschaut, finde aber nix entsprechendes. Kann das sein, daß mir die Rechte dazu fehlen?