Фильтрация сообщений


Прикладная программа может выбирать конкретные сообщения, которые извлекает из очереди  (при игнорировании других сообщений) используя функцию GetMessage или PeekMessage, чтобы установить их фильтрацию. Фильтр - это диапазон кодов сообщений (заданный первым и последним идентификатором), дескриптор окна, или оба вместе. Функции GetMessage и PeekMessage используют фильтр сообщений, чтобы выбрать, какие сообщения извлекать из очереди. Фильтрация сообщений полезна в том случае, если прикладная программа должна найти очередь сообщений для сообщений, которые прибыли в очередь позже. Это также полезно применить, если приложение должно обрабатывать  сообщения ввода (аппаратные) перед обработкой помещенных в очередь сообщений.

Константы WM_KEYFIRST и WM_KEYLAST могут быть использованы как значения фильтра для извлечения всех сообщений клавиатуры; константы WM_MOUSEFIRST и WM_MOUSELAST  могут быть использованы для извлечения всех сообщений мыши.

Любая прикладная программа, которая фильтрует сообщения, должна гарантировать, что сообщение, удовлетворяющее параметрам фильтра, может быть помещено в очередь. Например, если приложение фильтрует сообщения WM_CHAR в окне, которое не принимает ввод информации с клавиатуры, функция GetMessage значения не возвращает. Это прикладную программу эффективно  приводит к "зависанию".

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz