ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »
