[C/C++][Windows] Anzeige bei minimierter Anwendung

Sebastian Thalhammer

Erfahrenes Mitglied
Hi.

Ich habe in einzelnen Anwendungen (z.b.: Stoppuhr) schon eine Anzeige in der Taskleiste gesehen. Die Zeit oder sowas. Unter Visual Basic habe ich ja glaube ich sogar eine Anleitung aber wie geht das mit VC++ zum Beispiel?
 
Shell_NotifyIcon() meinst du etwa?

Das funktioniert so:
als erste brauchst du ne NOTIFYICONDATA struktur, am besten speicherst du sie global. sie sieht so aus:

Code:
#define WM_TRAY (WM_USER+1)

NOTIFYICONDATA MyTrayIcon;
MyTrayIcon.cbSize = sizeof(MyTrayIcon);
MyTrayIcon.hWnd = MainWindow; //hauptfenster der applikation
MyTrayIcon.uID = 1; //Selbst gewählte nummer für die zuordnung, fals mehrere icons vorhanden sind
MyTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;  //festlegen welche members valid sind
MyTrayIcon.uCallbackMessage = WM_TRAY; //callback message
MyTrayIcon.hIcon = LoadIcon(NULL, IDI_APPLICATION); //Welches Icon?
strcpy(MyTrayIcon.szTip, "MyApplication); //tooltip?

Nun musst du das tray icon registrieren:
Code:
Shell_NotifyIcon(NIM_ADD, &MyTrayIcon);

Wenn du es nicht mehr brauchst musst du es entfernen:
Code:
Shell_NotifyIcon(NIM_DELETE, &MyTrayIcon);

und wenn du es ändern musst musst du es updaten:
Code:
Shell_NotifyIcon(NIM_MODIFY, &MyTrayIcon);

Wenn der user nun ein Mausevent auf dem Icon durchführt, dann bekommst du die oben festgelegte nachricht zugespielt.. in dem fall ein WM_TRAY. Wenn ich mich nicht irre ist die identisch mit WM_MOUSEMOVE
 
Zurück