Иконка в system tray
На этом Уроке мы узнаем, как помещать иконки в system tray и как создавать/использовать всплывающее меню.
Пpимеp можете скачать здесь.
Теория:
System tray - это прямоугольная область панели задач, в которой располагаются несколько иконок. Скорее всего, вы обнаружите там как минимум цифровые часы. Вы можете самостоятельно помещать иконки в system tray. Далее приводятся шаги, которые нужно для этого выполнить:
- Заполните структуру NOTIFYICONDATA, содержащую следующие поля:
- cbSize - размер данной структуры.
- hwnd - хэндл окна, которое будет получать уведомление, когда над иконкой в tray'e произойдёт событие мыши.
- uID - константа, используемая в качестве идентификатора иконки. Вы сами выбираете значение этой константе. В случае, если вы поместили в system tray несколько иконок, вы сможете узнать, над какой именно из них произошло событие мыши.
- uFlags - указывает, какие поля данной структуры заполнены
- NIF_ICON Поле hIcon заполнено.
- NIF_MESSAGE Поле uCallbackMessage заполнено.
- NIF_TIP Поле szTip заполнено.
uCallbackMessage - пользовательское сообщение, которое Windows отошлёт указанному в поле hwnd окну, в случае, когда над иконкой произойдёт событие мыши. Сообщение вы создаете сами.
hIcon - хэндл иконки, которую вы хотите поместить в system tray.
szTiр - 64-байтовый массив, содержащий строку для использования в качестве всплывающей подсказки к иконке.
Вызовите Shell_NotifyIcon, определённую в shell32.inc. Данная функция имеет следующий прототип:
Shell_NotifyIcon PROTO dwMessage:DWORD, pnid:DWORD
dwMessage - это тип сообщения, которое нужно отправить оболочке.
NIM_ADD Добавляет иконку в system tray. NIM_DELETE Удаляет иконку из system tray. NIM_MODIFY Изменяет иконку в system tray.
рnid - это указатель на коректно заполненную структуру NOTIFYICONDATA.
Если вы хотите добавить иконку в system tray, используйте сообщение NIM_ADD, если хотите удалить иконку, применяйте NIM_DELETE.
Вот, собственно, и всё. Но чаще всего просто поместить иконку в system tray недостаточно. Вам нужно как-то реагировать на событий мыши, происходящие над этой иконкой. Это можно сделать, обрабатывая сообщение, указанное в поле uCallbackMessage структуры NOTIFYICONDATA. Это сообщение содержит следующие значения в wParam и lParam (отдельное спасибо s__d за эту информацию):
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий