В параметре wParam содержится хэндл создаваемого окна. В lParam – указатель на следующую структуру.
/*
* данные для HCBT_CREATEWND, на которые указывает lParam
*/
struct CBT_CREATEWND {
struct tagCREATESTRUCT *lpcs; // Данные для создания
// нового окна.
HWND hwndInsertAfter; // Хэндл окна, после которого будет
// добавлено это окно (Z-order).
} CBT_CREATEWND, *LPCBT_CREATEWND;
Функция-фильтр может изменить значение hwndInsertAfter или значения в lpcs .
HCBT_DESTROYWND
Windows вызывает хук WH_CBT с этим кодом перед уничтожением какого-либо окна. Если хук является локальным, это окно должно принадлежать потоку, на который установлен хук. Windows вызывает хук WH_CBT до посылки сообщения WM_DESTROY. Если функция-фильтр вернет TRUE, окно не будет уничтожено.
Параметр wParam содержит хэндл уничтожаемого окна. В lParam находится 0L.
HCBT_MINMAX
Windows вызывает хук WH_CBT с этим кодом перед минимизацией или максимизацией окна. Когда хук установлен как локальный, это окно должно принадлежать потоку, на который установлен хук. Если фильтр вернет TRUE, действие будет отменено.
В wParam передается хэндл окна, которое готовится к максимизации/минимизации. lParam содержит одну из SW_*-констант, определенных в WINUSER.H и описывающих операцию над окном.
HCBT_MOVESIZE
Windows вызывает хук WH_CBT с этим кодом перед перемещением или изменением размеров окна, сразу после того, как пользователь закончил выбор новой позиции или размеров окна. Если хук установлен как локальный, это окно должно принадлежать потоку, на который установлен хук. Если фильтр вернет TRUE, действие будет отменено.
В wParam передается хэндл перемещаемогоизменяемого окна. lParam содержит LPRECT, который указывает на новые координаты окна.
HCBT_SYSCOMMAND
Windows вызывает хук WH_CBT с этим кодом во время обработки системной команды. Если хук установлен как локальный, окно, чье системное меню вызвало данное событие, должно принадлежать потоку, на который установлен хук. Хук WH_CBT вызывается из функции DefWindowsProc. Если приложение не передает сообщение WH_SYSCOMMAND функции DefWindowsProc, это хук не получит управление. Если функция-фильтр вернет TRUE, системная команда не будет выполнена.
В wParam содержится системная команда (SC_TASKLIST, SC_HOTKEY, и так далее), готовая к выполнению. Если в wParam передается SC_HOTKEY, в младшем слове (LOWORD) lParam содержится хэндл окна, к которому относится горячая клавиша. Если в wParam передается любое другое значение и если команда системного меню была выбрана мышью, в младшем слове lParam будет находиться горизонтальная позиция, а в старшем слове (HIWORD) – вертикальная позиция указателя мыши.
Следующие системные команды приводят к срабатыванию этого хука изнутри DefWindowProc:
SC_CLOSE |
Закрыть окно. |
SC_HOTKEY |
Активировать окно, связанное с определенной горячей клавишей. |
SC_HSCROLL |
Горизонтальная прокрутка. |
SC_KEYMENU |
Выполнить команду меню по комбинации клавиш. |
SC_MAXIMIZE |
Распахнуть окно. |
SC_MINIMIZE |
Минимизировать окно. |
SC_MOUSEMENU |
Выполнить команду меню по щелчку мыши. |
SC_MOVE |
Переместить окно. |
SC_NEXTWINDOW |
Перейти к следующему окну. |
SC_PREVWINDOW |
Перейти к предыдущему окну. |
SC_RESTORE |
Сохранить предыдущие координаты (контрольная точка – checkpoint). |
SC_SCREENSAVE |
Запустить хранитель экрана. |
SC_SIZE |
Изменить размер окна. |
SC_TASKLIST |
Запустить или активировать Планировщик Задач (Windows Task Manager). |
SC_VSCROLL |
Вертикальная прокрутка. |
HCBT_CLICKSKIPPED
Windows вызывает хук WH_CBT с этим кодом при удалении события от мыши из входной очереди потока, в случае, если установлен хук мыши. Windows вызовет системный хук, когда из какой-либо входной очереди будет удалено событие от мыши и в системе установлен либо глобальный, либо локальный хук мыши. Данный код передается только в том случае, если к хуку WH_MOUSE прикреплена фильтрующая функция. Несмотря на свое название, HCBT_CLICKSKIPPED генерируется не только для пропущенных событий от мыши, но и в случае, когда событие от мыши удаляется из системной очереди. Его главное назначение — установить хук WH_JOURNALPLAYBACK в ответ на событие мыши. (За дополнительной информацией обратитесь к секции "WM_QUEUESYNC".)
В wParam передается идентификатор сообщения мыши – например, WM_LBUTTONDOWN или любое из сообщений WM_?BUTTON*. lParam содержит указатель на структуру MOUSEHOOKSTRUCT, которая описана следующим образом:
Читать дальше