鼠标输入

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

在本节中

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

函数

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

以下函数已过时。

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

通知

名称 说明
WM_APPCOMMAND 通知窗口用户生成了应用程序命令事件,例如,通过使用鼠标单击应用程序命令按钮或在键盘上键入应用程序命令键。
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_MOUSEWHEEL 当鼠标滚轮旋转时,发送到焦点窗口。 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 按钮时,光标位于窗口的工作区时发布。 如果未捕获鼠标,消息将发布到光标下方的窗口中。 否则,消息将发布到捕获了鼠标的窗口。

结构

名称 说明
HARDWAREINPUT 包含有关由键盘或鼠标以外的输入设备生成的模拟消息的信息。
输入 包含用于合成输入事件(如击键、鼠标移动和鼠标单击)的信息。
LASTINPUTINFO 包含最后一次输入的时间。
MOUSEINPUT 包含有关模拟鼠标事件的信息。
MOUSEMOVEPOINT 包含有关屏幕坐标中鼠标位置的信息。
TRACKMOUSEEVENT 由 TrackMouseEvent 函数用于跟踪鼠标指针何时离开窗口或将鼠标悬停在窗口上指定时间量。