鼠标输入 (键盘和鼠标输入)

本部分介绍系统如何向应用程序提供鼠标输入,以及应用程序如何接收并处理该输入。

在本节中

主题 说明
关于鼠标输入
本主题讨论鼠标输入。
使用鼠标输入
本部分介绍与鼠标输入关联的任务。
鼠标输入参考

函数

名称 说明
_TrackMouseEvent 当鼠标指针离开窗口或将鼠标悬停在窗口上指定的时间时,发布消息。 如果存在,此函数将调用 TrackMouseEvent, 否则它将模拟它。
DragDetect 捕获鼠标并跟踪其移动,直到用户释放左键、按 ESC 键或将鼠标移动到围绕指定点的拖动矩形外部。 拖动矩形的宽度和高度由 GetSystemMetrics函数返回的 SM _ CXDRAGSM _ CYDRAG 值指定。
EnableMouseInPointer 使鼠标能够充当指向设备。
GetCapture 如果已捕获鼠标的任何 (,) 窗口的句柄。 一次只能捕获一个窗口;无论光标是否在其边框内,此窗口都接收鼠标输入。
GetDoubleClickTime 检索鼠标的当前双击时间。 双击是鼠标按钮的两次单击序列,第二次单击发生在第一次单击后的指定时间内。 双击时间是双击第一次和第二次单击之间可能发生的最大毫秒数。
GetMouseMovePointsEx 检索最多 64 个以前鼠标或笔坐标的历史记录。
ReleaseCapture 从当前线程中的窗口释放鼠标捕获,并还原正常的鼠标输入处理。 捕获鼠标的窗口将接收所有鼠标输入,而不考虑光标的位置,除非在光标热点位于另一个线程的窗口时单击鼠标按钮。
SetCapture 将鼠标捕获设置到属于当前线程的指定窗口。 SetCapture 在鼠标位于捕获窗口上时捕获鼠标输入,或在鼠标位于捕获窗口上且该按钮仍处于关闭状态时按下鼠标按钮时捕获鼠标输入。 一次只能捕获一个窗口。
如果鼠标光标在另一个线程创建的窗口上,则只有在鼠标按钮关闭时,系统才将鼠标输入指向指定的窗口。
SetDoubleClickTime 设置鼠标的双击时间。 双击是鼠标按钮的两次单击序列,第二次单击发生在第一次单击后的指定时间内。 双击时间是双击第一次和第二次单击之间可能发生的最大毫秒数。
SwapMouseButton 反转或还原鼠标左键和右键的含义。
TrackMouseEvent 当鼠标指针离开窗口或将鼠标悬停在窗口上指定的时间时,发布消息。

以下函数已过时。

函数 说明
鼠标 _ 事件 合成鼠标运动和按钮单击。

通知

名称 说明
WM _ CAPTURECHANGED 发送到丢失鼠标捕获的窗口。
WM _ LBUTTONDBLCLK 当用户在光标位于窗口的工作区时双击鼠标左键时发布。 如果未捕获鼠标,则消息将发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ LBUTTONDOWN 当用户在光标位于窗口的工作区时按下鼠标左键时发布。 如果未捕获鼠标,则消息将发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ LBUTTONUP 当用户在光标位于窗口的工作区时释放鼠标左键时发布。 如果未捕获鼠标,则消息将发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ MBUTTONDBLCLK 当用户在光标位于窗口的工作区时双击鼠标中键时发布。 如果未捕获鼠标,则消息将发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ MBUTTONDOWN 当用户在光标位于窗口的工作区时按下鼠标中键时发布。 如果未捕获鼠标,则消息将发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ MBUTTONUP 当用户在光标位于窗口的工作区时释放鼠标中键时发布。 如果未捕获鼠标,则消息将发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ MOUSEACTIVATE 当光标处于非活动窗口并且用户按下鼠标按钮时发送。 父窗口仅在子窗口将此消息传递给 DefWindowProc 函数时接收此消息。
WM _ MOUSEHOVER 当光标悬停在窗口的工作区上,在之前对 TrackMouseEvent的调用中指定的一段时间时,将鼠标悬停在窗口中。
WM _ MOUSEHWHEEL 当鼠标的水平滚轮倾斜或旋转时发送到焦点窗口。 DefWindowProc函数将消息传播到窗口的父级。 不应有消息的内部转发,因为 DefWindowProc 会在父链上传播该消息,直到找到处理该消息的窗口。
WM _ MOUSELEAVE 当光标离开之前对 TrackMouseEvent的调用中指定的窗口的工作区时,该窗口被发布到窗口。
WM _ MOUSEMOVE 光标移动时,已发布到窗口。 如果未捕获鼠标,则消息将发送到包含光标的窗口。 否则,消息将发送到已捕获鼠标的窗口。
WM _ 鼠标滚轮 当鼠标滚轮旋转时发送给焦点窗口。 DefWindowProc函数将消息传播到窗口的父级。 不应存在消息的内部转发,因为 DefWindowProc 会在父链上向其传播,直到找到处理它的窗口。
WM _ NCHITTEST 发送到窗口,以确定窗口的哪个部分对应于特定屏幕坐标。 例如,当光标移动、按下鼠标按钮或释放鼠标按钮,或响应对函数(如 WindowFromPoint)的调用时,会发生这种情况。 如果未捕获鼠标,则会将消息发送到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。
WM _ NCLBUTTONDBLCLK 当光标位于窗口非工作区中并且用户双击鼠标左键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCLBUTTONDOWN 当用户在光标位于窗口非工作区中并且用户按下鼠标左键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCLBUTTONUP 当用户在光标位于窗口非工作区中并且用户释放鼠标左键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCMBUTTONDBLCLK 当光标位于窗口非工作区中并且用户双击鼠标中键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCMBUTTONDOWN 当用户在光标位于窗口非工作区中并且用户按下鼠标中键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCMBUTTONUP 当光标位于窗口非工作区中并且用户释放鼠标中键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCMOUSEHOVER 当光标悬停在窗口的非工作区上时,如果在之前调用 TrackMouseEvent时指定的时间段,则发布到该窗口。
WM _ NCMOUSELEAVE 当光标离开在先前对 TrackMouseEvent的调用中指定的窗口的非工作区时,已发布到该窗口。
WM _ NCMOUSEMOVE 当光标移动到窗口的非工作区中时发布到窗口。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCRBUTTONDBLCLK 当用户在光标位于窗口非工作区中并且用户双击鼠标右键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCRBUTTONDOWN 当用户在光标位于窗口非工作区中并且用户按下鼠标右键时发送。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCRBUTTONUP 当用户在光标位于窗口非工作区中并且用户释放鼠标右键时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCXBUTTONDBLCLK 当光标位于窗口非工作区中并且用户双击第一个或第二个 X 按钮时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCXBUTTONDOWN 当光标位于窗口非工作区中并且用户按下第一个或第二个 X 按钮时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ NCXBUTTONUP 当光标位于窗口非工作区中并且用户释放第一个或第二个 X 按钮时发布。 此消息将发送到包含光标的窗口。 如果某个窗口已捕获鼠标,则不会发布此消息。
WM _ RBUTTONDBLCLK 当光标位于窗口工作区中并且用户双击鼠标右键时发布。 如果未捕获鼠标,则会将消息发布到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。
WM _ RBUTTONDOWN 当光标位于窗口工作区中并且用户按下鼠标右键时发布。 如果未捕获鼠标,则会将消息发布到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。
WM _ RBUTTONUP 当光标位于窗口工作区中并且用户释放鼠标右键时发布。 如果未捕获鼠标,则会将消息发布到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。
WM _ XBUTTONDBLCLK 当光标位于窗口工作区中并且用户双击第一个或第二个 X 按钮时发布。 如果未捕获鼠标,则会将消息发布到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。
WM _ XBUTTONDOWN 当光标位于窗口工作区中并且用户按下第一个或第二个 X 按钮时发布。 如果未捕获鼠标,则会将消息发布到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。
WM _ XBUTTONUP 当光标位于窗口工作区中并且用户释放第一个或第二个 X 按钮时发布。 如果未捕获鼠标,则会将消息发布到光标下的窗口。 否则,会将消息发送到捕获了鼠标的窗口。

結構

名称 说明
MOUSEMOVEPOINT 包含有关鼠标在屏幕坐标中的位置的信息。
TRACKMOUSEEVENT TrackMouseEvent 函数用来跟踪当鼠标指针离开窗口或在窗口上悬停指定的时间时。