Фильтр WH_MOUSE
Фильтр WH_MOUSE получает управление, когда функции GetMessage или PeekMessage возвращают сообщения мыши. Функция фильтра должна находиться в DLL-библиотеке.
Приведем прототип функции фильтра типа WH_MOUSE:
LRESULT CALLBACK MouseProc( int code, // код действия WPARAM wParam, // код сообщения LPARAM lParam); // указатель на структуру MOUSEHOOKSTRUCT
Так же, как и для предыдущего фильтра, параметр code может принимать значения HC_ACTION и HC_NOREMOVE.
Параметр wParam содержит код сообщения, поступившего от мыши.
Через параметр lParam передается указатель на структуру MOUSEHOOKSTRUCT :
typedef struct tagMOUSEHOOKSTRUCT { POINT pt; HWND hwnd; UINT wHitTestCode; DWORD dwExtraInfo; } MOUSEHOOKSTRUCT;
Эта структура содержит дополнительную информацию, имеющую отношение к сообщению.
Поле pt является структурой типа POINT, в которой находятся экранные x- и y-координаты курсора мыши. Поле hwnd содержит идентификатор окна, в функцию которого будет направлено сообщение. В поле wHitTestCode находится код тестирования, определяющий область окна, соответствующую расположению курсора мыши на момент генерации сообщения. Поле dwExtraInfo содержит дополнительную информацию, которую можно получить с помощью функции GetMessageExtraInfo :
LPARAM WINAPI GetMessageExtraInfo(void);
Назначение отдельных бит возвращаемого этой функцией значения зависит от аппаратного обеспечения.