СообЧа > База Знаний > Программирование > Visual Basic

Вопрос

Версия языка: 6
Используя функции АПИ, я сворачиваю программу в трей. При сворачивании «назначается» подсказка (это некая строковая переменная, которая меняет свое значение в процессе работы).

Как обновлять подсказку при работе программы, свернутой в трей (подсказка обновляется только если развернуть и снова свернуть программу)?

Возможно ли в трее изменять иконку программы (в зависимости он некоего результата работы программы)?

Ответ

Раз программу в трей посадил, значит со структурой NOTIFYICONDATA знаком.

Например,

Private Icn As NOTIFYICONDATA
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_FLAG = NIF_MESSAGE Or NIF_ICON Or NIF_TIP

На форме есть два PictureBox, с помещенными в них иконками.
При запуске программы:
With Icn
.cbSize = Len(Icn)
.hwnd = Me.hwnd
.uID = 1
.uFlags = NIF_FLAG 'вот и наша константа, содержащая параметры вызова функции
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Picture1.Picture
'текст всплывающей подсказки для нашей программы
.szTip = «Первое сообщение»
Shell_NotifyIcon NIM_ADD, Icn
Me.Hide
End With

Если мы меняем, что нам надо:

With Icn
.hIcon = Picture2.Picture
.szTip = «Второе сообщение»
Shell_NotifyIcon NIM_MODIFY, Icn
End With

При завершении работы:

Shell_NotifyIcon NIM_DELETE, Icn

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация