Поделиться через


сообщение 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 находится в низком порядке коротких возвращаемого значения; Координата y находится в коротких (оба представляют подписанные значения, так как они могут принимать отрицательные значения в системах с несколькими мониторами). Если возвращаемое значение назначено переменной, можно использовать макрос MAKEPOINTS для получения структуры ТОЧЕК из возвращаемого значения. Вы также можете использовать макрос GET_X_LPARAM или GET_Y_LPARAM для извлечения координат x-или y.

Важный

Не используйте loWORD или макросы HIWORD для извлечения координат курсора x-и y, так как эти макросы возвращают неверные результаты в системах с несколькими мониторами. Системы с несколькими мониторами могут иметь отрицательные координаты x и y, а LOWORD и HIWORD рассматривать координаты как неподписанные количества.

Чтобы определить, что клавиша ALT была нажата, проверьте, ли GetKeyState с VK_MENU< 0. Обратите внимание, что это не должно быть GetAsyncKeyState.

Требования

Требование Ценность
Минимальный поддерживаемый клиент
Windows 2000 Профессиональный [только классические приложения]
Минимальный поддерживаемый сервер
Windows 2000 Server [только классические приложения]
Заголовок
Winuser.h (включая Windowsx.h)

См. также

Справочник

GET_X_LPARAM

GET_Y_LPARAM

GetCapture

GetKeyState

SetCapture

WM_LBUTTONDBLCLK

WM_LBUTTONUP

концептуальные

ввод мыши

другие ресурсы

MAKEPOINTS

ТОЧКИ