none
Wie programmiere ich temporäre Benachrichtigungsfenster in VS C++ ? RRS feed

  • Frage

  • Hallo Miteinander,

    programminterne Nachrichten und Infos lassen sich einfach mit der Messagebox() anzeigen.

    Wie kann ich Nachrichten in meinem C++ Programm erzeugen, die als Benachrichtigung zeitlich begrenzt angezeigt werden, so wie das beispielsweise beim Entfernen einer USB-Karte oder nach der erfolgreichen Installation eines Treibers gelöst ist?

    Gibt es hierfür eine Funktion, die ich in meinem C++ Programm verwenden kann?

    Vielen Dank

    Theo

    Freitag, 20. März 2020 10:28

Antworten

Alle Antworten

  • Hallo Theo,

    bei einem solchen Event wird ja immer ein Zustand abgefragt und wenn sich an diesem Zustand was ändert, kannst du ein neues Event anstoßen. Was da so kryptisch klingt heißt nichts anderes, als dass du beispielsweise prüfst ob eine USB-Karte gefunden wird, wenn ja, passiert nichts, wenn nein, wird dies in irgendeiner Form mitgeteilt.

    Mag sein, dass meine Methode, wie ich so etwas löse nicht sehr professionell ist, aber sie funktioniert.

    Ich löse das mit einem Timer. Den Intervall kannst du ja auf ein vertretbares Maß setzen.
    Konkret habe ich in einer meiner Anwendungen ein Label, das i.d.R. unsichtbar ist. 

    Wenn nun deine Routine feststellt, dass sich am Zustand der USB-Karte was geändert hat, werden:

    a) das Label sichtbar
    b) intern der gewünschte Wert für die Anzeigedauer des Labels festgelegt*
    c) der gewünschte Text in Label ausgegeben
    d) nach Erreichen der Anzeigedauer das Label wieder unsichtbar

    *In meinen Anwendungen wird meist in der Titelleiste Datum und Uhrzeit angezeigt weswegen der Timer-Intervall auf 1000 (1s) steht.

    Darum ist es relativ einfach die Zeit -zu der das Label ausgeblendet wird festzulegen und zu überwachen. Egal welches Control du temporär anzeigen möchtest kannst du einfach die Zeit berechnen indem du abhängig vom Ereignis die Startzeit des Events ermittelst und die Anzeigedauer addierst.

    Mit einer While-Schleife (alternativ If -Then-Abfrage) kannst du über das Timer-Ereignis feststellen lassen, ob die Zeitspanne, die du das Control anzeigen möchtest, verstrichen ist oder nicht.

    Hoffe, die Zeilen habe dir etwas geholfen.
    Schau dir dazu ggf. mal den Umgang mit TimeSpan und die Timerfunktion an.


    Liebe Grüße Stefan

    Samstag, 21. März 2020 17:09
  • Hallo Stefan,

    vielen Dank für die AW. Bitte entschuldige meine nicht klare Formulierung der Frage.

    Ich suche die Windows- Funktion, welche nicht wie die verfügbare Funktion MessageBox(HWND...) einen Dialog auf dem Bildschirm erzeugt, sondern die Funktion, welche die Benachrichtigungsbox unter Windows anspricht. Unter Windows 10 sind das die Nachrichten, die man im rechten unteren Eck mit der Maustaste öffnen und einsehen kann und unter Windows 7 sind das die temporären Meldungsfenster, die sich nach einer Weile wieder schließen.

    Nochmals vielen Dank für Deine Mühe.

    Viele Grüße

    Theo


    Montag, 23. März 2020 05:39
  • Hallo,

    Du meinst die Nachrichten Popupinhalt

    Hier auch die Doku zu Senden von Popupbenachrichtigungen über C++ WRL-Apps

    Mit der suche nach toast notification findet man die Dokus dazu


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Montag, 23. März 2020 07:35
  • Hallo Thomas,

    vielen Dank. Das ist die Lösung.

    Viele Grüße und bleibt gesund.

    Theo

    Montag, 23. März 2020 09:03
  • Hallo Theo,

    Ich freue mich, dass Dein Problem erfolgreich gelöst wurde, aber ich möchte Dich auf die richtige Markierung als Antwort hinweisen. Es gilt den Beitrag mit der Lösung, der in diesem Fall Auskunft über den Popupinhalt und die Popupbenachrichtigungen gibt, als Antwort zu markieren. Dadurch wird die Lösung hervorgehoben und für künftige Leser dieses Threads übersichtlicher. Den eigenen Beitrag zu markieren macht nur dann Sinn, wenn Du selbst zur Lösung gekommen bist. Ich verweise Dich auf die Forenregeln:

    ·        Lösungsbeiträge als “Die Antwort“ markieren
    Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 23. März 2020 10:45
    Moderator
  • Hallo,

    vielen Dank für den Hinweis. Hoffe es stimmt jetzt. Irgendwann lern ich das auch noch.

    Viele Grüße

    Theo

    Montag, 23. März 2020 16:10