Функция MessageProc
Процедура фильтра (hook) MessageProc - это определяемая программой или определяемая библиотекой функция повторного вызова, используемая функцией SetWindowsHookEx. Система вызывает эту функцию после события ввода данных случившегося в диалоговом окне, окне сообщения, меню или на линейке прокрутки, но до того, как сообщение, созданное событием ввода данных обработается. Процедура фильтра (hook) может осуществлять текущий контроль за сообщениями диалогового окна, окна сообщения, меню или линейки прокрутки, созданными конкретными или всеми прикладными программами.
Тип HOOKPROC определяет указатель на эту функцию повторного вызова. MessageProc - это имя - заместитель для определяемого программой или определяемого библиотекой имени функции.
Синтаксис
LRESULT CALLBACK MessageProc( int code, WPARAM wParam, LPARAM lParam ); |
Параметры
code
[in] Устанавливает тип события ввода данных, которое породило сообщение. Если code - меньше чем нуль, процедура фильтра (hook) должна переправить сообщение в функцию CallNextHookEx без дальнейшей обработки и возвратить значение, возвращенное CallNextHookEx. Этим параметром может быть одно из ниже перечисленных значений.
Значение | Предназначение |
MSGF_DDEMGR | Событие ввода данных произошло в то время, когда Библиотека управления динамическим обменом данных (DDEML) ожидала синхронную транзакцию (групповую операцию), чтобы закончить работу. Дополнительную информацию о DDEML, см. главу Библиотека управления динамическим обменом данными. |
MSGF_DIALOGBOX | Событие ввода данных произошло в окне сообщения или в диалоговом окне. |
MSGF_MENU | Событие ввода данных произошло в меню. |
MSGF_SCROLLBAR | Событие ввода данных произошло на полосе прокрутки. |
wParam
Этот параметр не используется.
lParam
[in] Указатель на структуру MSG.Возвращаемое значение
Если code - меньше чем нуль, процедура фильтра (hook) должна возвратить значение, возвращенное CallNextHookEx.
Если code больше или равен нулю, а процедура фильтра (hook) не обрабатывала сообщение, очень рекомендуется, чтобы Вы вызвали CallNextHookEx и возвратили значение, которое она возвращает; в противном случае, другие прикладные программы, которые установили фильтры (hook) WH_MSGFILTER, не будут получать уведомления от него и, в результате, могут повести себя неправильно. Если процедура фильтра (hook) обрабатывала сообщение, она может возвратить ненулевое значение, чтобы воспрепятствовать системе передавать сообщение в остальную часть цепочки фильтров (hook) или в целевую оконную процедуру.
Замечания
Приложение устанавливает процедуру фильтра (hook), определяя тип фильтра как WH_MSGFILTER и указатель на процедуру фильтра (hook) при вызове функции SetWin dowsHookEx.
Если приложение, которое использует Библиотеку управления динамическим обменом данными (DDEML) и выполняет синхронные транзакции, которые должны обработать сообщения прежде, чем они будут распределены, должно использовать фильтр(ловушку) (hook) WH_MSGFILTER.
Смотри также
Обзор Фильтр-процедуры (hooks) событий, Функции, используемые фильтрами (hook), CallNextHookEx, MSG, SetWindowsHookEx
Размещение и совместимость MessageProc |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Нет |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |