Mensagem WM_XBUTTONDOWN

Postado quando o usuário pressiona o primeiro ou o segundo botão X 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_XBUTTONDOWN                  0x020B

Parâmetros

wParam

A palavra de ordem inferior indica se várias chaves virtuais estão pressionadas. Ela pode ser um ou mais dos seguintes valores.

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.

A palavra de ordem superior indica o botão que foi clicado. Pode ser um dos seguintes valores.

Valor Significado
XBUTTON1
0x0001
O primeiro botão X foi clicado.
XBUTTON2
0x0002
O segundo botão X foi clicado.

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.

Valor retornado

Se o aplicativo processar essa mensagem, ela deverá retornar TRUE. Para saber mais sobre como processar o valor retornado, confira a seção Comentários.

Comentários

Use o código a seguir para obter as informações contidas no parâmetro wParam:

fwKeys = GET_KEYSTATE_WPARAM (wParam); 
fwButton = GET_XBUTTON_WPARAM (wParam);

Use o seguinte código para obter a posição horizontal e vertical:

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam); 

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.

Ao contrário das mensagens WM_LBUTTONDOWN, WM_MBUTTONDOWN e WM_RBUTTONDOWN, um aplicativo retornará TRUE dessa mensagem se ele a processar. Isso permite que o software que simula essa mensagem em sistemas Windows anteriores ao Windows 2000 determine se o procedimento da janela processou a mensagem ou chamou DefWindowProc para processá-la.

Requisitos

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
Winuser.h (inclui Windowsx.h)

Confira também

Referência

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_XBUTTON_WPARAM

GET_Y_LPARAM

GetCapture

SetCapture

WM_XBUTTONDBLCLK

WM_XBUTTONUP

Conceitual

Entrada por mouse

Outros recursos

MAKEPOINTS

POINTS