Функция 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),  CallNextHookExMSG, SetWindowsHookEx

Размещение и совместимость MessageProc

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1  и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Нет

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

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

Hosted by uCoz