Как скрыть всплывающую подсказку по желанию? - PullRequest
3 голосов
/ 24 мая 2009

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

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

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

Можно ли спрятать шарик, не воссоздав значок на панели задач? Спасибо.

Ответы [ 2 ]

4 голосов
/ 24 мая 2009

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

3 голосов
/ 24 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...