#pragma once /*//////////////////////////////////////////////////////////////// 28/11/2006 william /////////////////////////////////////////////////////////////////*/ class ShellIcon { BOOL m_bAdd; private: NOTIFYICONDATA lpData; public: ShellIcon(LPCTSTR szToolTip, HWND hwnd, UINT uCallbackMessage) { lpData.cbSize =sizeof(NOTIFYICONDATA); lpData.hWnd = hwnd; lpData.uCallbackMessage = uCallbackMessage; lpData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; lpData.hIcon = AfxGetApp()->LoadIcon (MAKEINTRESOURCE(IDR_MAINFRAME)); _tcscpy(lpData.szTip, szToolTip); } ~ShellIcon() { RemoveIconFromTray(); } public: BOOL AddIconToTray(); BOOL RemoveIconFromTray(); BOOL ChangeIcon(HICON hico); BOOL HideIcon(); BOOL ShowIcon(); BOOL SetToolTip(LPCTSTR lpToolTip); BOOL IsIconAlreayExist(); }; BOOL ShellIcon::IsIconAlreayExist() { return m_bAdd; } BOOL ShellIcon::AddIconToTray () { m_bAdd = TRUE; return Shell_NotifyIcon(NIM_ADD, &lpData); } BOOL ShellIcon::RemoveIconFromTray () { m_bAdd = FALSE; return Shell_NotifyIcon(NIM_DELETE, &lpData); } BOOL ShellIcon::HideIcon () { lpData.uFlags = NIF_ICON; return Shell_NotifyIcon (NIM_DELETE, &lpData); } BOOL ShellIcon::ShowIcon () { lpData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; return Shell_NotifyIcon(NIM_ADD, &lpData); } BOOL ShellIcon::ChangeIcon (HICON hico) { lpData.hIcon = hico; return Shell_NotifyIcon(NIM_MODIFY, &lpData); } BOOL ShellIcon::SetToolTip (LPCTSTR lpToolTip) { lpData.uFlags = NIF_TIP; _tcscpy(lpData.szTip, lpToolTip); return Shell_NotifyIcon(NIM_MODIFY, &lpData); }