Отключить автоскрытие NotifyIconOverflowWindow


Я сделал всплывающее окно, похожее на Win7 battery meter. Он ведет себя так же, как встроенный, за исключением тех случаев, когда он отображается через значок notify, который расположен на NotifyAreaOverflowWindow aka notify overfow area, что окно автоматически закрывается через некоторое время, в то время как оно должно скрываться только тогда, когда мой flyout закрывается. Единственное отличие, которое я смог заметить с помощью spyxx, что через некоторое время окно переполнения просто отправляет себе сообщение WM_SHOWWINDOW wp:0 lp:0.

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

скриншот

  • Изображение 1: тестовый всплывающий экран, показанный после нажатия на значок уведомления, который расположен в области переполнения + пара секунд бездействия пользователя.
  • Изображение 2: индикатор заряда батареи, показанный при нажатии на значок уведомления, который расположен в области переполнения + 2 минуты бездействия пользователя.
2 4

2 ответа:

Вы должны позвонить

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Handle, OBJID_CLIENT, 0);

Прежде чем вы покажете свое окно и позвоните

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, Handle, OBJID_CLIENT, 0);

После того, как вы его спрячете.

Всплывающие окна ничем не отличаются от любого другого окна.

Если я понимаю вашу проблему, которая заключается в том, что окна исчезают со временем, то решение довольно простое. Не используйте то, что NotifyAreaOverflowWindow есть. Вместо этого создайте собственное окно с соответствующими свойствами (без блока управления, без кнопок max/min, без текста заголовка и т. д...). Потому что, скорее всего, вы не можете установить продолжительность класса/объекта, который вы используете. Скорее всего, он предназначен для одиночных уведомлений, а не что-то умеренно полезное ;).

Кроме того, вы сможете делать причудливые вещи по своему желанию, не сталкиваясь с новыми проблемами.

Следующий учебник очень подробно рассказывает о том, как расположить его так идеально: http://blog.quppa.net/2010/12/09/windows-7-style-notification-area-applications-in-wpf-part-3-taskbar-position/