сообщение WM_LBUTTONDOWN
Опубликовано, когда пользователь нажимает левую кнопку мыши, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение будет размещено в окне под курсором. В противном случае сообщение публикуется в окне, которое захватило мышь.
Окно получает это сообщение через функцию WindowProc.
#define WM_LBUTTONDOWN 0x0201
Параметры
-
wParam
-
Указывает, отключены ли различные виртуальные ключи. Этот параметр может быть одним или несколькими из следующих значений.
Ценность Значение - MK_CONTROL
- 0x0008
Клавиша CTRL вниз. - MK_LBUTTON
- 0x0001
Левая кнопка мыши вниз. - MK_MBUTTON
- 0x0010
Средняя кнопка мыши вниз. - MK_RBUTTON
- 0x0002
Правая кнопка мыши вниз. - MK_SHIFT
- 0x0004
Клавиша SHIFT вниз. - MK_XBUTTON1
- 0x0020
XBUTTON1 вниз. - MK_XBUTTON2
- 0x0040
XBUTTON2 вниз. -
lParam
-
Слово с низким порядком указывает координату x курсора. Координата относительно левого верхнего угла клиентской области.
Слово с высоким порядком задает координату курсора y. Координата относительно левого верхнего угла клиентской области.
Возвращаемое значение
Если приложение обрабатывает это сообщение, оно должно возвращать ноль.
Пример
LRESULT CALLBACK WndProc(_In_ HWND hWnd, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
POINT pt;
switch (msg)
{
case WM_LBUTTONDOWN:
{
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
}
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
Дополнительные примеры см. в классических примеров Windows на сайте GitHub.
Замечания
Как отмечалось выше, координата x находится в низком порядке
Важный
Не используйте loWORD или макросы HIWORD для извлечения координат курсора x-и y, так как эти макросы возвращают неверные результаты в системах с несколькими мониторами. Системы с несколькими мониторами могут иметь отрицательные координаты x и y, а LOWORD и HIWORD рассматривать координаты как неподписанные количества.
Чтобы определить, что клавиша ALT была нажата, проверьте, ли GetKeyState с VK_MENU< 0. Обратите внимание, что это не должно быть GetAsyncKeyState.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент |
Windows 2000 Профессиональный [только классические приложения] |
Минимальный поддерживаемый сервер |
Windows 2000 Server [только классические приложения] |
Заголовок |
|
См. также
-
Справочник
-
концептуальные
-
другие ресурсы