2009-05-23 6 views
3

Очень легко заставить значок панели задач отображать всплывающую подсказку всплывающего окна: все, что мне нужно сделать, это установить флаг NIF_INFO при вызове Shell_NotifyIcon (NIM_MODIFY, ...), и появляется воздушный шар без проблем.Как скрыть воздушный шар на панели задач по желанию?

Теперь, я хочу, чтобы скрыть воздушный шар, когда он мне больше не нужен, но я не могу найти способ сделать это. Я попытался очистить флаг NIF_INFO и вызвать Shell_NotifyIcon (NIM_MODIFY, ...), но баллон остался. Он исчезает сам по себе, несколько секунд спустя, но это не то, что я хочу: я хочу скрыть это сразу, когда моя программа думает, что она должна быть скрыта.

Единственный способ исчезнуть воздушного шара - это уничтожить значок, а затем снова добавить его на панель задач, но это уродливо.

Можно ли скрыть воздушный шар, не воссоздавая значок панели задач? Благодарю.

ответ

4

Чтобы немедленно скрыть воздушный шар, установите szInfo член NOTIFYICONDATA в пустую строку, как nid.szInfo[0] = 0; и вызвать Shell_NotifyIcon(NIM_MODIFY, &nid).

+0

Кажется, что не работает в Windows 10. – Paul

3

Я бы предложил, чтобы на самом деле не было в интересах пользователя принудительно удалить воздушный шар с уведомлением. Иногда пользователь не смотрит на уведомление немедленно, и это медленное исчезновение, которое происходит через пару секунд, дает им возможность взглянуть, прежде чем воздушный шар исчезнет. С точки зрения юзабилити, отображение воздушного шара должно отвечать за приложение, но удаление воздушного шара должно действительно быть ответственным за пользователя. В противном случае вы могли бы скрывать информацию, которую они действительно интересовали, и, насильственно скрывая ее немедленно, вы полностью удаляете этот «последний шанс», который пользователь имеет во время воздушных шаров, исчезают.

+0

Вы правы, что в некоторых случаях воздушный шар должен оставаться на месте, чтобы дать пользователю время для его обзора, но есть много случаев, когда удаление воздушного шара должно обеспечить лучший опыт. Например, предположим, что хочу сообщить пользователю, что моя программа пытается подключиться к серверу. Соединение может занять только секунду, после чего нет смысла поддерживать всплывающее окно «Подключение к серверу ...». На самом деле это может смутить пользователя: соединение уже сделано, но воздушный шар говорит «connect ...», должно ли что-то не так с программой? –

+4

Поэтому вместо того, чтобы скрывать воздушный шар ... измените его текст, чтобы сказать «Подключено». и по-прежнему позволяют пользователю закрывать его самостоятельно. ;) – jrista

+0

Это хорошая идея, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^