WM_LBUTTONDOWN消息
当用户在光标位于窗口的工作区时按下鼠标左键时发布。 如果未捕获鼠标,消息将发布到光标下方的窗口中。 否则,消息将发布到捕获了鼠标的窗口。
窗口通过其 WindowProc 函数接收此消息。
#define WM_LBUTTONDOWN 0x0201
参数
-
wParam
-
指示各种虚拟键是否已按下。 此参数可使用以下一个或多个值。
Value 含义 - 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 按钮已关闭。 -
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;
}
有关更多示例,请参阅 GitHub 上的 Windows 经典示例 。
备注
如上所述,x 坐标处于返回值的低序 短 处;y 坐标位于高阶 短 (都表示 有符号 值,因为它们可以在具有多个监视器的系统上) 取负值。 如果将返回值赋给变量,则可以使用 MAKEPOINTS 宏从返回值获取 POINTS 结构。 还可以使用 GET_X_LPARAM 或 GET_Y_LPARAM 宏提取 x 坐标或 y 坐标。
重要
请勿使用 LOWORD 或 HIWORD 宏提取光标位置的 x 坐标和 y 坐标,因为这些宏在具有多个监视器的系统上返回不正确的结果。 具有多个监视器的系统可以具有负 x 坐标和 y 坐标, LOWORD 和 HIWORD 会将坐标视为无符号数量。
若要检测是否按下了 Alt 键,请检查 GetKeyState 是否 VK_MENU< 0。 请注意,这不能是 GetAsyncKeyState。
要求
要求 | Value |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|