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

UptoLike

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

34
И ее поля имеют следующий смысл:
cbSize размер структуры NOTIFYICONDATA.
hWnd манипулятор окна, которое будет получать сообщения от значка в области
состояния.
uID идентификатор значка. Это значение передается приложению в качестве
первого параметра (WPARAM) сообщения от значка.
uFlags набор флагов, которые определяют, какие поля структуры заданы
корректно. Могут использоваться следующие значения или их комбинации с
помощью логического «ИЛИ»: NIF_ICON поле hIcon корректно, NIF_MESSAGE
поле uCallbackMessage корректно, NIF_TIP – поле szTip корректно.
uCallbackMessage идентификатор сообщения, посылаемого окну hWnd при
возникновении события «мыши» над значком в области состояния. Можно
использовать значения WM_USER+N, где N неотрицательное число;
hIcon манипулятор иконки, которую нужно разместить (изменить, удалить) в
System Tray.
szTip ASCIIZ-строка, которая будет использоваться в качестве «всплывающего»
текста, когда указатель «мыши» остановится над значком. Если текст отсутствует,
первый байт строки должен быть нулевым.
Перед вызовом функции Shell_NotifyIcon нужно подготовить экземпляр
структуры NOTIFYICONDATA. Поля cbSize, hWnd и uID нужно заполнять всегда,
остальные по мере необходимости. В соответствии с заполнением полей
uCallbackMessage, hIcon и szTip формируется поле флагов uFlags.
Чтобы добавить значок в область состояния, нужно вызвать функцию
Shell_NotifyIcon, передав ей в качестве параметра dwMessage значение NIM_ADD,
а в качестве pnid указатель на инициализированный экземпляр структуры
NOTIFYICONDATA. Если все выполнено правильно, функция вернет ненулевое
значение, а в System Tray появится новая иконка. Если планируется, что окно
должно принимать сообщения от значка, следует обратить внимание, чтобы поле
hWnd перед вызовом Shell_NotifyIcon было инициализировано значением
манипулятора реально существующего окна. В противном случае значок будет
исчезать из области состояния, как только над ним остановится указатель «мыши»
Если было инициализировано поле uCallbackMessage, система будет посылать окну
hWnd сообщения о событиях «мыши» над значком. При этом параметр сообщения
WPARAM будет содержать идентификатор значка uID, а параметр LPARAM тип
сообщения.
Приложение, разместившее значок в System Tray, может в любой момент
изменить иконку или всплывающую подсказку. Для этого нужно внести изменения
в соответствующие поля структуры NOTIFYICONDATA, поправить значение
uFlags (значения cbSize, hWnd и uId изменяться не должны) и вызвать функцию
Shell_NotifyIcon со значением NIM_MODIFY в качестве параметра dwMessage.
Для удаления значка из System Tray достаточно правильно заполнить поля
cbSize, hWnd, uId и вызвать функцию Shell_NotifyIcon со значением параметра
dwMessage равным NIM_DELETE. Пример добавления иконки к окну представлен в
листинге 13.
      И ее поля имеют следующий смысл:
cbSize – размер структуры NOTIFYICONDATA.
hWnd – манипулятор окна, которое будет получать сообщения от значка в области
состояния.
uID – идентификатор значка. Это значение передается приложению в качестве
первого параметра (WPARAM) сообщения от значка.
uFlags – набор флагов, которые определяют, какие поля структуры заданы
корректно. Могут использоваться следующие значения или их комбинации с
помощью логического «ИЛИ»: NIF_ICON – поле hIcon корректно, NIF_MESSAGE –
поле uCallbackMessage корректно, NIF_TIP – поле szTip корректно.
uCallbackMessage – идентификатор сообщения, посылаемого окну hWnd при
возникновении события «мыши» над значком в области состояния. Можно
использовать значения WM_USER+N, где N – неотрицательное число;
hIcon – манипулятор иконки, которую нужно разместить (изменить, удалить) в
System Tray.
szTip – ASCIIZ-строка, которая будет использоваться в качестве «всплывающего»
текста, когда указатель «мыши» остановится над значком. Если текст отсутствует,
первый байт строки должен быть нулевым.

      Перед вызовом функции Shell_NotifyIcon нужно подготовить экземпляр
структуры NOTIFYICONDATA. Поля cbSize, hWnd и uID нужно заполнять всегда,
остальные – по мере необходимости. В соответствии с заполнением полей
uCallbackMessage, hIcon и szTip формируется поле флагов uFlags.
      Чтобы добавить значок в область состояния, нужно вызвать функцию
Shell_NotifyIcon, передав ей в качестве параметра dwMessage значение NIM_ADD,
а в качестве pnid – указатель на инициализированный экземпляр структуры
NOTIFYICONDATA. Если все выполнено правильно, функция вернет ненулевое
значение, а в System Tray появится новая иконка. Если планируется, что окно
должно принимать сообщения от значка, следует обратить внимание, чтобы поле
hWnd перед вызовом Shell_NotifyIcon было инициализировано значением
манипулятора реально существующего окна. В противном случае значок будет
исчезать из области состояния, как только над ним остановится указатель «мыши»
Если было инициализировано поле uCallbackMessage, система будет посылать окну
hWnd сообщения о событиях «мыши» над значком. При этом параметр сообщения
WPARAM будет содержать идентификатор значка uID, а параметр LPARAM – тип
сообщения.
      Приложение, разместившее значок в System Tray, может в любой момент
изменить иконку или всплывающую подсказку. Для этого нужно внести изменения
в соответствующие поля структуры NOTIFYICONDATA, поправить значение
uFlags (значения cbSize, hWnd и uId изменяться не должны) и вызвать функцию
Shell_NotifyIcon со значением NIM_MODIFY в качестве параметра dwMessage.
      Для удаления значка из System Tray достаточно правильно заполнить поля
cbSize, hWnd, uId и вызвать функцию Shell_NotifyIcon со значением параметра
dwMessage равным NIM_DELETE. Пример добавления иконки к окну представлен в
листинге 13.
                                                                            34