Как добавить свою программу в трей


#define MYWM_NOTIFYICON (WM_USER + 1)
// Описываем сообщение, которое будет посылаться при взаимодействии юзера с нашей иконкой в систрее
Создаем (глобальную) функцию
BOOL TrayMessage (HWND hDlg, DWORD dwMessage, UINT uID, HICON hIcon, PSTR pszTip) 
// systray icon
{
   
BOOL res;

   
NOTIFYICONDATA tnd;

   
tnd.cbSize = sizeof(NOTIFYICONDATA);
   
tnd.hWnd = hDlg;
   
tnd.uID = uID;

   
tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
   
tnd.uCallbackMessage = MYWM_NOTIFYICON; // Сообщение, которое пошлется при всяких там кликах на иконке...
   
tnd.hIcon = hIcon;

   
if (pszTip)
   {
       
lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
   }
   
else
   
{
       
tnd.szTip[0] = '\0';
   }

   
res = Shell_NotifyIcon(dwMessage, &tnd);

   
return res;
}
А потом по ходу дела (то есть проги) делаем следующее:

Добавляем иконку:
TrayMessage(hWnd, NIM_ADD, 0, hIcon, szText);
Изменяем иконку:
TrayMessage(hWnd, NIM_MODIFY, 0, hIcon, szText);
Удаляем иконку:
TrayMessage(hWnd, NIM_DELETE, 0, 0, 0); 
Параметры функции TrayMessage:
HWND hWnd; // указатель на окно 
HICON hIcon; // указатель на иконку
char *szText; // указатель на текст для подсказки
Теперь ловим сообщение MYWM_NOTIFYICON, где lParam будет событием (WM_LBUTTONDOWN, к примеру...)
 
« Предыдущая статья   Следующая статья »