Есть хук, который отслеживает нажатие WM_XBUTTONDOWN и WM_XBUTTONUP. Мне необходимо понять какая именно боковая кнопка мыши нажата (1-я или 2-я). Использую следующий код.
LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
if (wParam == WM_XBUTTONDOWN || wParam == WM_XBUTTONUP)
{
GET_XBUTTON_WPARAM(wParam); // result = 0
MOUSEHOOKSTRUCTEX* mouseStruct = (MOUSEHOOKSTRUCTEX*)lParam;
mouseStruct->mouseData;// result = 0
return -1;
}
}
return CallNextHookEx(myHook, nCode, wParam, lParam);
}
Но и GET_XBUTTON_WPARAM(wParam), и структура mouseStruct->mouseData возвращают 0.
Что я делаю не так и почему они возвращают всегда 0? Как исправить данную проблему?
Почему вы используете MOUSEHOOKSTRUCTEX? В обработчик WH_MOUSE_LL вам передается указатель на MSLLHOOKSTRUCT. Поэтому
const MSLLHOOKSTRUCT *mouseStruct = (const MSLLHOOKSTRUCT *) lParam;
и вот там уже смотрим в mouseData.
Для WM_XBUTTONDOWN значения XBUTTON1 или XBUTTON2 должны передаваться в HIWORD(mouseStruct->mouseData).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости