Mensagem WM_LBUTTONDOWN
Postado quando o usuário pressiona o botão esquerdo do mouse enquanto o cursor está na área do cliente de uma janela. Se o mouse não for capturado, a mensagem será postada na janela abaixo do cursor. Caso contrário, a mensagem é postada na janela que capturou o mouse.
Uma janela recebe essa mensagem por meio da sua função WindowProc.
#define WM_LBUTTONDOWN 0x0201
-
wParam
-
Indica se várias teclas virtuais estão pressionadas. Esse parâmetro pode usar um dos valores a seguir.
Valor Significado - MK_CONTROL
- 0x0008
A tecla CTRL está pressionada. - MK_LBUTTON
- 0x0001
O botão esquerdo do mouse está pressionado. - MK_MBUTTON
- 0x0010
O botão do meio do mouse está pressionado. - MK_RBUTTON
- 0x0002
O botão direito do mouse está pressionado. - MK_SHIFT
- 0x0004
A tecla SHIFT está pressionada. - MK_XBUTTON1
- 0x0020
O primeiro botão X está pressionado. - MK_XBUTTON2
- 0x0040
O segundo botão X está pressionado. -
lParam
-
A palavra de ordem inferior especifica a coordenada x do cursor. As coordenadas são relativas ao canto superior esquerdo da área do cliente.
A palavra de ordem superior especifica a coordenada y do cursor. As coordenadas são relativas ao canto superior esquerdo da área do cliente.
Se um aplicativo processar essa mensagem, ela deverá retornar zero.
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 obter mais exemplos, confira Exemplos clássicos do Windows no GitHub.
Conforme observado acima, a coordenada x está na ordem inferior curto do valor retornado; a coordenada y está na ordem superior curto (ambos representam valores assinados, porque podem usar valores negativos em sistemas com vários monitores). Se o valor retornado for atribuído a uma variável, você poderá usar a macro MAKEPOINTS para obter uma estrutura POINTS do valor retornado. Você também pode usar a macro GET_X_LPARAM ou GET_Y_LPARAM para extrair a coordenada X ou Y.
Importante
Não use as macros LOWORD ou HIWORD para extrair as coordenadas x e y da posição do cursor, porque essas macros retornam resultados incorretos em sistemas com vários monitores. Sistemas com vários monitores podem ter coordenadas x e y negativas, e LOWORD e HIWORD tratam as coordenadas como quantidades sem sinal.
Para detectar que a tecla ALT foi pressionada, verifique se GetKeyState com VK_MENU< 0. Observe que isso não deve ser GetAsyncKeyState.
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos para desktop] |
Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho |
|
-
Referência
-
Conceitual
-
Outros recursos