Операционные системы. Кручинин А.Ю. - 35 стр.

UptoLike

Составители: 

35
const TrayIcon = WM_USER + 1;
NOTIFYICONDATA NID;
NID.cbSize = sizeof(NOTIFYICONDATA );
NID.hWnd = hWnd;
NID.uID = 1;
NID.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
NID.uCallbackMessage = TrayIcon; //указатель на создаваемое событие от иконки
NID.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
strcpy(NID.szTip,"Имя приложения");
Shell_NotifyIcon(NIM_ADD,&NID);
Листинг 13 Добавление иконки программы в System Tray
Теперь необходимо написать обработку сообщения TrayIcon в функции
обработки сообщений главного окна. Так в листинге 14 показано как
обрабатывается сообщение о нажатии на иконку и разворачивании окна после этого.
// Часть функции обработки сообщений
case TrayIcon:
OnTray(hWnd,wParam,lParam);
break;
// Функция обработки сообщений от иконки
int OnTray(HWND hWnd,UINT wParam,LONG lParam)
{
switch(lParam)
{
case 514://WM_LBUTTONDBLCLK:
ShowWindow(hWnd,SW_SHOWNORMAL);
SetForegroundWindow(hWnd);
break;
}
return 0;
}
Листинг 14 Обработка нажатия на иконку в System Tray
Задание:
1. Модифицировать программу для работы с System Tray:
удаление собственной иконки из System Tray;
добавление иконки в System Tray;
добавление меню к иконке;
обработка нажатия левой и правой кнопок на меню;
обработка выбора пункта меню.
2. Удалить программу из Панели задач.
Контрольные вопросы:
1. Для чего предназначен System Tray?
2. Для чего нужно сообщение WM_USER?
const TrayIcon = WM_USER + 1;

NOTIFYICONDATA NID;
NID.cbSize = sizeof(NOTIFYICONDATA );
NID.hWnd = hWnd;
NID.uID = 1;
NID.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
NID.uCallbackMessage = TrayIcon; //указатель на создаваемое событие от иконки
NID.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
strcpy(NID.szTip,"Имя приложения");
Shell_NotifyIcon(NIM_ADD,&NID);
              Листинг 13 – Добавление иконки программы в System Tray

     Теперь необходимо написать обработку сообщения TrayIcon в функции
обработки сообщений главного окна. Так в листинге 14 показано как
обрабатывается сообщение о нажатии на иконку и разворачивании окна после этого.

// Часть функции обработки сообщений
case TrayIcon:
       OnTray(hWnd,wParam,lParam);
       break;

// Функция обработки сообщений от иконки
int OnTray(HWND hWnd,UINT wParam,LONG lParam)
{
       switch(lParam)
       {
       case 514://WM_LBUTTONDBLCLK:
               ShowWindow(hWnd,SW_SHOWNORMAL);
               SetForegroundWindow(hWnd);
               break;
       }
       return 0;
}
               Листинг 14 – Обработка нажатия на иконку в System Tray

Задание:
1. Модифицировать программу для работы с System Tray:
      – удаление собственной иконки из System Tray;
      – добавление иконки в System Tray;
      – добавление меню к иконке;
      – обработка нажатия левой и правой кнопок на меню;
      – обработка выбора пункта меню.
2. Удалить программу из Панели задач.

Контрольные вопросы:
1. Для чего предназначен System Tray?
2. Для чего нужно сообщение WM_USER?
                                                                                35