// Initialisieren des Trayicons
void InitTrayIcon()
{
NOTIFYICONDATA tnid;
UINT nIcon;
CString szTT;
if( _theOptions.m_bActive )
{
szTT = \"Application is active\";
nIcon = IDI_ACTIVE;
}
else
{
szTT = \"Application is inactive\";
nIcon = IDI_INACTIVE;
}
tnid.cbSize = sizeof( NOTIFYICONDATA ); // Größe der Struktur
tnid.hWnd = _ptheMainDlg->m_hWnd; // HWND des Hauptfensters
tnid.uID = TRAYICON_ID; // ID des Trayicons (eindeutig)
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // Flags
tnid.uCallbackMessage = TRAYICON_MSG; // Win-Message als Callback
tnid.hIcon = LoadIcon( AfxGetResourceHandle(), MAKEINTRESOURCE( nIcon ) ); // Icon laden
lstrcpyn( tnid.szTip, szTT, sizeof( tnid.szTip ) ); // Tooltip-Text setzen
Shell_NotifyIcon( NIM_ADD, &tnid );// Icon erzeugen
if ( tnid.hIcon ) // Icon zerstören, Shell_NotifyIcon
DestroyIcon( tnid.hIcon );// hat sich ne Kopie gemacht
}
// Löschen des Trayicons
void DestroyTrayIcon()
{
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof( NOTIFYICONDATA ); // Größe der Struktur
// (wichtig für interne Versionsermittlung)
tnid.hWnd = _ptheMainDlg->m_hWnd; // Hauptfenster, wie beim Anlegen
tnid.uID = TRAYICON_ID; // ID wie beim Anlegen
tnid.uFlags = 0; // Keine Flags nötig
Shell_NotifyIcon( NIM_DELETE, &tnid ); // Icon löschen
}
// Modifizieren des Icons (z.B. Tooltip-Text oder Icon ändern)
void ModifyTrayIcon()
{
NOTIFYICONDATA tnid;
CString szTT;
UINT nIcon;
if( _theOptions.m_bActive )
{
szTT = \"Application is active\";
nIcon = IDI_ACTIVE;
}
else
{
szTT = \"Application is inactive\";
nIcon = IDI_INACTIVE;
}
tnid.cbSize = sizeof( NOTIFYICONDATA ); // Größe der Struktur
tnid.hWnd = _ptheMainDlg->m_hWnd; // Hauptfenster, wie beim Anlegen
tnid.uID = TRAYICON_ID; // ID, wie beim anlegen
tnid.uFlags = NIF_TIP | NIF_ICON; // Flags
tnid.hIcon = LoadIcon( AfxGetResourceHandle(), MAKEINTRESOURCE( nIcon ) ); // Neues Icon
lstrcpyn( tnid.szTip, szTT, sizeof( tnid.szTip ) ); // Neuer Tooltip-Text
Shell_NotifyIcon( NIM_MODIFY, &tnid ); // Icon ändern
if ( tnid.hIcon ) // Icon zerstören, Shell_NotifyIcon
DestroyIcon( tnid.hIcon ); // hat sich ne Kopie gemacht
}