Эффект мерцания модального окна - PullRequest
2 голосов
/ 01 июня 2011

В типичном приложении для Windows, когда появляется модальное диалоговое окно, и мы щелкаем за его пределами, оно мерцает, что указывает на то, что что-либо за пределами этих границ на данный момент запрещено.

Есть ли какое-либо событие, которое срабатывает, когда это происходит?Мне действительно нужен этот эффект, чтобы я мог смоделировать это поведение для своего псевдомодального окна WPF.

Thx.Хариш

1 Ответ

1 голос
/ 01 июня 2011

См. Этот вопрос и ответ: Предотвращение кражи фокуса элементом управления WebBrowser?

Это объясняет, что делает FlashWindow в фоновом режиме.Я цитирую то, что вам интересно:

Microsoft не объясняет так много слов, что делает FlashWindow.К сожалению, он не отправляет конкретное сообщение (скажем, WM_FLASH или подобное), которое бы упростило сбор и аннулирование этого поведения.Вместо этого FlashWindow выполняет три действия:

Устанавливает системный таймер для интервалов мигания. Отправляет сообщение WM_NCACTIVATE для первой вспышки. Отправляет сообщение WM_NCACTIVATE, когда истекает время таймера (при получении WM_SYSTIMER)

* 1011.*

Итак, вам нужно найти интересующее вас окно и попытаться поймать WM_SYSTIMER в процедуре окна хостинга.Это (очень старое) недокументированное сообщение Windows.Значение 0x118.Вы также можете перехватить WM_NCACTIVATE, что может быть проще, поскольку оно представлено событиями .NET (активировано, деактивировано и т. Д.) *

...