Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MFC-Dialogbased..

Empfohlene Antworten

Veröffentlicht

Aloha, habe folgende Frage:

Ich möchte meinen Dialog per Befehl in den Systemtray schicken können, aber wie wird das gemacht. Bis jetzt habe ich nur CWND::ShowWindow gefunden, und damit gehts nur in die Taskleiste.

Hat jmd einen Vorschlag?

Es gibt eine automatische von MFC-gegebene Funktion, die einen Dialog in den Tray verkleinert.

Erstmal wird der Dialog wie ShowWindow() (1. Schritt) ausgeblendet und dann wird das das TrayIcon durch die Funktion Shell_NotifyIcon() (2. Schritt).

Hilfe zum Anzeigen einer TrayIcon gibt es auch in der MSDN z.B. Q149276.

Ich hoffe, dass ich dier helfen konnte

Hallo nochmal & THX mst, die Antwort hat geholfen, allerdings auch 3 neue Fragen aufgeworfen...

1) Wie schaffe ich es, der Struktur NOTIFYICONDATA beizubringen, mehr als ein Attribut (nämlich NIF_TIP und NIF_ICON) zu setzen. Bis jetzt ignoriert er immer eines.

2) Gibt es auch eine Funktion, um den Eintrag in der Taskleiste zu verstecken, sodass nur noch das Icon im Tray zu sehen ist?

3) Wie kann man dem Icon im Tray ein Menue zuweisen? Oder läuft das über das Attribut NIF_MESSAGE?

zu 2.:

schon mit bitweiser oder-Verknüpfung versucht ?

NOTIFYICONDATA nyd;

nyd.uFlags = NIF_ICON | NIF_TIP;

1.) Das bitweise Oder hilft. wie schon gesagt wurde.

2.) man kann nach dem hinzufügen des icon in die notification area das fenster mit ShowWindow(hWnd, SW_HIDE) verstecken. dadurch verschwindet der eintrag in der taskleiste.

3.) wenn man die maus über das icon bewegt, bekommt das etsprechende fenster (hWnd in der Struktur NOTIFYICONDATA) die entsprechenden nachrichten. WM_MOUSEMOVE, WM_LBUTTONDOWN, ... . diese kann man auswerten. dabei steht in wParam oder lParam - bin mir nicht ganz sicher - die id des icon (uID in der Struktur NOTIFYICONDATA). dann entsprechende das menü laden, mausposition ermitteln und menü anzeigen.

es soll auch gehen die uCallbackMessage zu setzen. diese wird dann dem fenster gesendet und man kann sie auswerten. dann steht in lParam die eigentliche nachricht drin (WM_MOUSEMOVE, ...). das hat bei mir allerdings noch nie funktioniert.

<FONT COLOR="#a62a2a" SIZE="1">[ 24. Oktober 2001 10:36: Beitrag 1 mal editiert, zuletzt von maddin ]</font>

Hmm, erstmal Danke für die Tipps betreffs bitweise Eingabe und SW_HIDE. Das Bitweise lesen funktioniert, allerdings scheint das ShowWindow(SW_HIDE) keinerlei Effekt zu zeigen.

Auch nach diesem Befehl ist das Prg noch in der Taskleiste sichtbar.

@maddin:

THX für den Tipp zu 3, allerdings hätt ich da noch eine Frage: Wie kann man das, was in den Hwnd geschrieben wird, auswerten?

wenn du gelesen hast, das irgendwas in hwdn geschrieben wird, dann hast du denke ich was falsche gelesen. man kann in der struktur NOTIFYICONDATA festlegen, welches fenster der besitzer vom icon ist. diese fenster bekommt dann die nachrichten, wenn sich die maus über dem icon bewegt, ... . sieht dann in etwa so aus:


// Icon anzeigen

NOTIFYICONDATA nid;

nid.hwnd = hMyWnd;   // Handle für das Fenster

nid.uID = IDC_TRAYICON;  // ID meines ICONS

// ... restlichen Werte festlegen

Shell_NotifyIcon (NIM_ADD, &nid);


// das passende WindowProc

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wP, LPARAM lP);

{

   switch (uMsg)

  {

     //...

     case WM_LBUTTONDOWN:

         if (lP /* || wP */ == IDC_TRAYICON)

           // ... Maustaste drücken behandeln.

   }

   // ...

}

so sollte es laufen. problem ist bloß, das ich nicht daran gedacht habe, das du mit der mfc arbeitest. da weiß ich leider nicht genau, wie das mit der nachrichtenverarbeitung läuft.

aber dafür habe ich das: http://codeguru.earthweb.com/shell/tbhide.html http://codeguru.earthweb.com/shell/AniTrayIcon.html http://codeguru.earthweb.com/shell/systemtray.shtml

das erste ist ein beispielprogramm mit deinem problem. als zweites eine klasse zum icon anzeigen. sogar animierte. und das dritte ist ein artikel über das thema.

hoffe das hilft

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.