Compartir a través de


Mensaje de WM_LBUTTONDOWN

Aparece cuando el usuario presiona el botón izquierdo del mouse mientras el cursor se encuentra en el área cliente de una ventana. Si no se captura el mouse, se envía el mensaje a la ventana debajo del cursor. De lo contrario, el mensaje se publica en la ventana que ha capturado el mouse.

Una ventana recibe este mensaje mediante la función WindowProc.

#define WM_LBUTTONDOWN                  0x0201

Parámetros

wParam

Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser uno o más de los siguientes valores.

Value Significado
MK_CONTROL
0x0008
La tecla CTRL está presionada.
MK_LBUTTON
0x0001
El botón izquierdo del mouse está presionado.
MK_MBUTTON
0x0010
El botón central del mouse está presionado.
MK_RBUTTON
0x0002
El botón derecho del mouse está presionado.
MK_SHIFT
0x0004
La tecla MAYÚS está presionada.
MK_XBUTTON1
0x0020
El primer botón X está presionado.
MK_XBUTTON2
0x0040
El segundo botón X está pulsado.

lParam

La palabra de orden inferior especifica la coordenada X del cursor. La coordenada es relativa a la esquina superior izquierda del área cliente.

La palabra de primer orden especifica la coordenada Y del cursor. La coordenada es relativa a la esquina superior izquierda del área cliente.

Valor devuelto

Si la aplicación procesa este mensaje, debe devolver cero.

Ejemplo

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;
}

Para obtener más ejemplos, consulte Ejemplos clásicos de Windows en GitHub.

Comentarios

Como se indicó anteriormente, la coordenada X está en el entero short de orden inferior del valor devuelto; la coordenada Y está en el entero short de orden superior (ambos representan valores con signo porque pueden tomar valores negativos en sistemas con varios monitores). Si el valor devuelto se asigna a una variable, puede usar la macro MAKEPOINTS para obtener una estructura POINTS a partir del valor devuelto. También puede usar las macros GET_X_LPARAM o GET_Y_LPARAM para extraer la coordenada X o Y.

Importante

No use las macros LOWORD ni HIWORD para extraer las coordenadas X e Y de la posición del cursor porque estas macros devuelven resultados incorrectos en sistemas con varios monitores. Los sistemas con varios monitores pueden tener coordenadas x e y negativas, y LOWORD y HIWORD tratan las coordenadas como cantidades sin signo.

Para detectar que se ha pulsado la tecla ALT, compruebe si figura GetKeyState con VK_MENU< 0. Tenga en cuenta que esto no debe ser GetAsyncKeyState.

Requisitos

Requisito Valor
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Winuser.h (incluye Windowsx.h)

Consulte también

Referencia

GET_X_LPARAM

GET_Y_LPARAM

GetCapture

GetKeyState

SetCapture

WM_LBUTTONDBLCLK

WM_LBUTTONUP

Conceptual

Entrada de mouse

Otros recursos

MAKEPOINTS

POINTS