WM_XBUTTONDBLCLK 消息

当光标位于窗口客户端区中并且用户双击第一个或第二个 X 按钮时发布。 如果未捕获鼠标,则消息将发布到光标下方的窗口。 否则,消息将发布到捕获了鼠标的窗口。

窗口通过其 WindowProc 函数接收此消息。

#define WM_XBUTTONDBLCLK                0x020D

参数

wParam

低序字指示各种虚拟键是否已按下。 它可以是下面的一个或多个值。

含义
MK_CONTROL
0x0008
按下了 CTRL 键。
MK_LBUTTON
0x0001
按下了鼠标左键。
MK_MBUTTON
0x0010
按下了鼠标中键。
MK_RBUTTON
0x0002
按下了鼠标右键。
MK_SHIFT
0x0004
按下了 SHIFT 键。
MK_XBUTTON1
0x0020
按下了第一个 X 按钮。
MK_XBUTTON2
0x0040
按下了第二个 X 按钮。

高阶字指示双击了哪个按钮。 可以是下列值之一。

含义
XBUTTON1
0x0001
双击第一个 X 按钮。
XBUTTON2
0x0002
双击第二个 X 按钮。

lParam

低序字指定光标的 x 坐标。 坐标相对于工作区的左上角。

高序字指定光标的 y 坐标。 坐标相对于工作区的左上角。

返回值

如果应用程序处理此消息,则应返回 TRUE。 有关处理此返回值的详细信息,请参阅“备注”部分。

备注

使用以下代码获取 wParam 参数中的信息:

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

使用以下代码获取水平和垂直位置:

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

如上所述,x 坐标位于返回值的低位短值;y 坐标位于高位短值(两者都表示有符号值,因为它们在具有多个监视器的系统上可以取负值)。 如果返回值被赋给一个变量,则可以使用 MAKEPOINTS 宏从返回值中获取一个 POINTS 结构。 还可以使用 GET_X_LPARAMGET_Y_LPARAM 宏提取 x 或 y 坐标。

重要

请勿使用 LOWORDHIWORD 宏提取光标位置的 x 和 y 坐标,因为这些宏在具有多个监视器的系统上会返回不正确的结果。 具有多个监视器的系统可以具有负 x 坐标和 y 坐标,LOWORDHIWORD 会将坐标视为无符号数量。

只有具有 CS_DBLCLKS 样式的窗口才能接收 WM_XBUTTONDBLCLK 消息,每当用户按下、松开和再次按下鼠标左键时,系统都会在系统的双击时间限制内生成消息。 双击其中一个按钮实际上会生成四条消息:WM_XBUTTONDOWNWM_XBUTTONUPWM_XBUTTONDBLCLK,以及再次生成 WM_XBUTTONUP

WM_LBUTTONDBLCLKWM_MBUTTONDBLCLKWM_RBUTTONDBLCLK 消息不同,如果应用程序处理此消息,则应从此消息返回 TRUE。 这样做将允许在早于 Windows 2000 的 Windows 系统上模拟此消息的软件确定窗口过程是处理该消息还是调用 DefWindowProc 来处理它。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
Header
Winuser.h(包括 Windowsx.h)

另请参阅

引用

DefWindowProc

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_XBUTTON_WPARAM

GET_Y_LPARAM

GetCapture

GetDoubleClickTime

SetDoubleClickTime

WM_XBUTTONDOWN

WM_XBUTTONUP

Conceptual

鼠标输入

其他资源

MAKEPOINTS

POINTS