Zum Inhalt springen

MFC-Dialogbased..


Fornax

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...