7.5.1.5 - Функция CBTProc

(ПроцедураМашиннойПодготовки)

Подключаемая процедура CBTProc - это определяемая программой или определенная библиотекой функция повторного вызова, которую вызывает система перед активизацией, созданием, разрушением, уменьшением, увеличением, перемещением, или установлением размеров окна; перед завершением системной команды; перед удалением события мыши или клавиатуры из системной очереди сообщений; перед установкой фокуса клавиатуры; или перед синхронизацией системной очереди сообщений. Значение, возвращаемое подключаемой процедурой, определяет, разрешит или запретит операционная система Windows одно из этих действий. Прикладная программа машинной подготовки (computer-based training) (CBT) использует эту фильтр - процедуру, чтобы принять полезные уведомления от системы.

Синтаксис

LRESULT CALLBACK CBTProc
(
	int nCode,		// код hook-точки
	WPARAM wParam,	// зависит от кода hook-точки
	LPARAM lParam	// зависит от кода hook-точки
);

Параметры
nCode
Определяет код, который подключаемая процедура использует, чтобы установить, как обрабатывать сообщение. Этот параметр может быть одним из следующих значений:

Если nCode - меньше чем нуль, подключаемая процедура должна передать сообщение в функцию CallNextHookEx без дальнейшей обработки и должна возвратить значение, возвращенное CallNextHookEx.

wParam
Зависит от параметра nCode. За подробностями обратитесь в. следующий раздел Замечаний.
lParam
Зависит от параметра nCode. За подробностями обратитесь в. следующий раздел Замечаний.

Возвращаемые значения
Для действий, соответствующих ниже перечисленным кодам hook-точек CBT, величина возвращаемого значения должна быть 0, чтобы позволить операцию, или 1, чтобы запретит ее:

HCBT_ACTIVATE
HCBT_CREATEWND
HCBT_DESTROYWND
HCBT_MINMAX
HCBT_MOVESIZE
HCBT_SETFOCUS
HCBT_SYSCOMMAND

Для операций, соответствующих ниже перечисленным кодам hook-точек CBT, величина возвращаемого значения игнорируется:

HCBT_CLICKSKIPPED
HCBT_KEYSKIPPED
HCBT_QS

Замечания
Подключаемая процедура не должна устанавливать фильтр - процедуру WH_JOURNALPLAYBACK кроме как в ситуациях, описанных в предшествующем перечне кодов hook-точек.
Эта подключаемая процедура должна быть в динамически подключаемой библиотеке (DLL). Прикладная программа устанавливает фильтр - процедуру, определяя тип hook-точки WH_CBT и адрес подключаемой процедуры при вызове функции SetWindowsHookEx.
Нижеследующая таблица описывает параметры wParam и lParam для каждого кода hook-точки HCBT_:
КодwParamlParam
HCBT_ACTIVATEОпределяет дескриптор окна, собирающегося быть активизированным.Определяет дальний указатель на структуру CBTACTIVATESTRUCT, содержащую дескриптор активного окна и определяет, не изменяется ли активность из-за щелчка мыши.
HCBT_CLICKSKIPPEDИдентифицирует сообщение мыши, удаленное из системной очереди сообщений.Определяет дальний указатель на структуру MOUSEHOOKSTRUCT, содержащей код местоположения курсора и дескриптор окна, для которого предназначено сообщение мыши. Значение HCBT_CLICKSKIPPED отправляется подключаемой процедуре CBTProc только тогда, если установлена hook-точка WH_MOUSE. За перечнем кодов местоположения курсора, обратитесь к статье WM_NCHITTEST.
HCBT_CREATEWNDОпределяет дескриптор нового окна.Определяет дальний указатель на структуру CBT_CREATEWND, содержащую параметры инициализации для окна. Параметры включают в себя координаты и размеры окна. Изменяя эти параметры, подключаемая процедура CBTProc может установить начальный размер и позицию окна.
HCBT_DESTROYWNDОпределяет дескриптор окна, собирающегося быть разрушенным.Не определяется и должен быть установлен в нуль.
HCBT_KEYSKIPPEDИдентифицирует код виртуальной клавиши.Определяет повторный счет, скэн-код, код клавиши перехода, предыдущее состояние клавиши и код контекста. Значение HCBT_KEYSKIPPED отправляется подключаемой процедуре CBTProc только тогда, если установлена hook-точка WH_KEYBOARD. Для получения дополнительной информации, см. сообщение WM_KEYDOWN или WM_KEYUP.
HCBT_MINMAXОпределяет дескриптор свертываемого или развертываемого окна.Определяет младшее слово значения показа окна (SW _), определенное операцией. Для получения списка значений показа окна, см. ShowWindow. Старшее слово не определяется.
HCBT_MOVESIZEОпределяет дескриптор окна, которое будет перемещено или установлено с другими размерами.Определяет дальний указатель на структуру RECT, содержащую координаты окна. Изменяя значения в структуре, подключаемая процедура CBTProc может устанавливать конечные координаты окна.
HCBT_QSНе определяется и должен быть установлен в нуль.Не определяется и должен быть установлен в нуль.
HCBT_SETFOCUSОпределяет дескриптор окна, получающего фокус клавиатуры.Определяет дескриптор окна, теряющего фокус клавиатуры.
HCBT_SYSCOMMANDОпределяет значение системной команды (SC_), которое устанавливается командой системы. Для получения дополнительной информации о значениях системных команд, см. WM_SYSCOMMAND.lСодержит те же самые данные что и значение lParam сообщения WM_SYSCOMMAND: Если команда системного меню выбрана мышью, младшее слово содержит x-координату курсора, в экранных координатах, а старшее слово содержит y-координату; иначе, параметр не используется.

CBTProc - метка - заместитель для определяемого программой или определенного библиотекой имени функции.

Смотри также
CallNextHookEx, CreateWindow, SetWindowsHookEx, WM_SYSCOMMAND

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

Windows NT				Да 
Win95					Да 
Win32s					Да 
Импортируемая библиотека			Определенная пользователем 
Заголовочный файл				winuser.h 
Unicode					Нет 
Замечания по платформе			HOOKPROC 

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 19.06.2002