2024年5月19日发(作者:布乐容)
鼠标原理
鼠标是一种将人手的动作记录下来,通过电脑处理后再一点不漏地还原在显示器上并对电脑
进行担任的设备。
以常见的半光电结构的鼠标来说,当鼠标向左移动时,鼠标内部滚球受标挚垫的摩擦力而向
右侧滚动,带动垂直方向的转轴向左旋转,而转轴未端的圆盘光栅切割其侧面的红外线发光
管的光线。圆盘光栅另一侧的红外线接收管内沿上下方向排列了两个接收管,当上面的接收
管先于下面感受到红外线后,控制芯片产生向左(或向右)移动的信号,而当下面的接收管先
于上面的感受到红外线后,则产生向右(或向左)移动的信号。控制芯片再将这些方向信号调
制后送到计算机,在屏幕上正确还原出鼠标的移动,另外一组的水平转动装置同样进行判断,
处理情况与水平方向完全相同。而当鼠标作斜方向移动时,水平和垂直两个方向的转动装置
同时输出信号,这样,屏幕上的鼠标箭头就可以随着手的移动满屏移动了。当按到鼠标的左、
右键时,微动开关的闭合将通断信号传给控制芯片,再转换为电脑可以识别的信号,鼠标的
基本原理大致如此。
鼠标是一个重要的,但可选的输入设备,好的应用程序应该包括鼠标接口,但不应该把鼠标
作为唯一的输入设备,而也应该提供完备的键盘支持。
鼠标光标
当用户移动鼠标时,系统屏幕上的一个图形也跟着移动,这个图形就叫做鼠标光标。鼠
标光标包含一个单像素的点称为热点,系统根据该点移动或识别光标位置。当产生鼠标事件
时,包含热点的窗口就会收到事件所产生的消息。接收消息的窗体没有必要是激活的窗体,
或者获取了键盘焦点。
系统维护着控制鼠标移动速度的变量—也就是,用户移动鼠标时,光标所移动的距离。
可以使用SystemParametersInfo函数并指定SPI_GETMOUSE或SPI_SETMOUSE标志以获取
或设置鼠标速度。更多关于光标的信息,请参见“光标”。
鼠标捕获
当发生鼠标事件时,系统通常会把一个鼠标消息发送到包含鼠标热点的窗体中,应用程
序可以通过使用SetCapture函数把鼠标信息转而传递给指定的窗口。在调用ReleaseCapture
或者指定另外一个捕获窗体,更一般的情况是用户点击了其他线程创建的窗体前,该窗口就
会接收所有的鼠标信息。
鼠标捕获改变时,系统就会给失去捕获的窗口发送WM_CAPTURECHANGED消息。消
息的lParam参数为获得捕获的窗体句柄。
只有前台的窗体才可以捕获鼠标输入,如果后台窗体尝试捕获的话,只有热点在窗体的
可见部分时才会引发鼠标事件消息。
如果一个窗体必须接收所有的鼠标事件,即便光标移到了窗口之外,捕获鼠标输入就很
有用了。例如,涌涌程序可能会跟踪按下一个鼠标键后的光标位置,跟着光标移动鼠标,直
到释放鼠标键。如果应用程序没有捕获鼠标输入的话,用户在窗体外释放鼠标键时,该窗体
就不会收到button-up消息了。
线程中可以使用GetCapture函数确定是否有一个它的窗口正在捕获鼠标,如果发现一个
窗口正在捕获的话,GetCapture函数就会获取该窗口的句柄。
鼠标单击锁
鼠标单击锁(ClickLock)是Microsoft Windows Millennium Edition (Windows Me)及
Windows XP中新增的辅助选项,该功能允许用户点击主键后锁定为按下状态,对于应用程序
来说该键看起来是按下去的,应用程序可以通过发送任意的鼠标消息或用户单击任意键来释
放该键。该特点可以使得用户做复杂的鼠标组合时变得简单。如,突出显示、拖拽或者打开
菜单时就会很容易。更多信息,请参阅SystemParametersInfo及如下标志的详细描述:
SPI_GETMOUSECLICKLOCK
SPI_SETMOUSECLICKLOCK
SPI_GETMOUSECLICKLOCKTIME
SPI_SETMOUSECLICKLOCKTIME
鼠标设置
尽管鼠标是一个重要的输入设备,但并不是每个用户都需要鼠标。应用程序通过调用
GetSystemMetrics函数,并传入SM_MOUSEPRESENT,就会确定系统中是否安装了鼠标。
Windows可以支持三键的鼠标,三键鼠标包含左键、中键及右键,消息及鼠标的常量命
名中依次用L、M及R标识三个键。单键鼠标的按键被认为是左键。尽管Windows支持多键
鼠标,但大多数应用程序还是主要用左键,其他键反而极少使用。
从Windows 98及Microsoft Windows NT 4.0开始,应用程序也可以支持鼠标滚轮了,鼠标
滚轮可以被按下或者滚动。鼠标滚轮被按下时,担当中键(第三键)的作用,并发送一般的
中键消息。滚轮旋转时,应用程序就会收到滚轮消息。更多信息请参照“鼠标滚轮”节。
从Windows 2000开始,应用程序可以支持应用程序命令键了,这些键被称为X键,使之
能更方便地访问Internet浏览器、电子邮件及媒体服务。当X键按下时,应用程序会收到一
个WM_APPCOMMAND消息。更多信息,请参照WM_APPCOMMAND消息的详细说明。
应用程序通过向GetSystemMetrics传递SM_CMOUSEBUTTONS可以确定鼠标的按键个
数。要为用户设置左手习惯,可以通过SwapMouseButton函数交换意义上的左右键。通过传
递SPI_SETMOUSEBUTTONSWAP给SystemParametersInfo函数也可以调换左右键。注意:
鼠标是一个共享资源,调换左右键同样会影响其他的应用程序。
XBUTTONs
从Windows 2000开始, Microsoft可以支持Microsoft IntelliMouse Explorer,就是一个具有
五个键的鼠标。除了通常的左键、中间及右键外,还包括XBUTTON1及XBUTTON2两个键,
这两个键在使用Microsoft Internet Explorer时可以提供浏览器的前进、后退功能。
Windows管理器通过WM_XBUTTON*及WM_NCXBUTTON*消息可以支持
XBUTTON1、XBUTTON2键,这些消息中WPARAM消息中的高字(HIWORD)包含的一个
标志说明按下了那个X键。由于这些鼠标消息也介于WM_MOUSEFIRST与
WM_MOUSELAST之间,所以应用程序可以通过GetMessage或者PeekMessage筛选所有的
鼠标消息。
Windows 2000/XP: 下面是支持XBUTTON1、XBUTTON2的消息:
WM_APPCOMMAND
WM_NCXBUTTONDBLCLK
2024年5月19日发(作者:布乐容)
鼠标原理
鼠标是一种将人手的动作记录下来,通过电脑处理后再一点不漏地还原在显示器上并对电脑
进行担任的设备。
以常见的半光电结构的鼠标来说,当鼠标向左移动时,鼠标内部滚球受标挚垫的摩擦力而向
右侧滚动,带动垂直方向的转轴向左旋转,而转轴未端的圆盘光栅切割其侧面的红外线发光
管的光线。圆盘光栅另一侧的红外线接收管内沿上下方向排列了两个接收管,当上面的接收
管先于下面感受到红外线后,控制芯片产生向左(或向右)移动的信号,而当下面的接收管先
于上面的感受到红外线后,则产生向右(或向左)移动的信号。控制芯片再将这些方向信号调
制后送到计算机,在屏幕上正确还原出鼠标的移动,另外一组的水平转动装置同样进行判断,
处理情况与水平方向完全相同。而当鼠标作斜方向移动时,水平和垂直两个方向的转动装置
同时输出信号,这样,屏幕上的鼠标箭头就可以随着手的移动满屏移动了。当按到鼠标的左、
右键时,微动开关的闭合将通断信号传给控制芯片,再转换为电脑可以识别的信号,鼠标的
基本原理大致如此。
鼠标是一个重要的,但可选的输入设备,好的应用程序应该包括鼠标接口,但不应该把鼠标
作为唯一的输入设备,而也应该提供完备的键盘支持。
鼠标光标
当用户移动鼠标时,系统屏幕上的一个图形也跟着移动,这个图形就叫做鼠标光标。鼠
标光标包含一个单像素的点称为热点,系统根据该点移动或识别光标位置。当产生鼠标事件
时,包含热点的窗口就会收到事件所产生的消息。接收消息的窗体没有必要是激活的窗体,
或者获取了键盘焦点。
系统维护着控制鼠标移动速度的变量—也就是,用户移动鼠标时,光标所移动的距离。
可以使用SystemParametersInfo函数并指定SPI_GETMOUSE或SPI_SETMOUSE标志以获取
或设置鼠标速度。更多关于光标的信息,请参见“光标”。
鼠标捕获
当发生鼠标事件时,系统通常会把一个鼠标消息发送到包含鼠标热点的窗体中,应用程
序可以通过使用SetCapture函数把鼠标信息转而传递给指定的窗口。在调用ReleaseCapture
或者指定另外一个捕获窗体,更一般的情况是用户点击了其他线程创建的窗体前,该窗口就
会接收所有的鼠标信息。
鼠标捕获改变时,系统就会给失去捕获的窗口发送WM_CAPTURECHANGED消息。消
息的lParam参数为获得捕获的窗体句柄。
只有前台的窗体才可以捕获鼠标输入,如果后台窗体尝试捕获的话,只有热点在窗体的
可见部分时才会引发鼠标事件消息。
如果一个窗体必须接收所有的鼠标事件,即便光标移到了窗口之外,捕获鼠标输入就很
有用了。例如,涌涌程序可能会跟踪按下一个鼠标键后的光标位置,跟着光标移动鼠标,直
到释放鼠标键。如果应用程序没有捕获鼠标输入的话,用户在窗体外释放鼠标键时,该窗体
就不会收到button-up消息了。
线程中可以使用GetCapture函数确定是否有一个它的窗口正在捕获鼠标,如果发现一个
窗口正在捕获的话,GetCapture函数就会获取该窗口的句柄。
鼠标单击锁
鼠标单击锁(ClickLock)是Microsoft Windows Millennium Edition (Windows Me)及
Windows XP中新增的辅助选项,该功能允许用户点击主键后锁定为按下状态,对于应用程序
来说该键看起来是按下去的,应用程序可以通过发送任意的鼠标消息或用户单击任意键来释
放该键。该特点可以使得用户做复杂的鼠标组合时变得简单。如,突出显示、拖拽或者打开
菜单时就会很容易。更多信息,请参阅SystemParametersInfo及如下标志的详细描述:
SPI_GETMOUSECLICKLOCK
SPI_SETMOUSECLICKLOCK
SPI_GETMOUSECLICKLOCKTIME
SPI_SETMOUSECLICKLOCKTIME
鼠标设置
尽管鼠标是一个重要的输入设备,但并不是每个用户都需要鼠标。应用程序通过调用
GetSystemMetrics函数,并传入SM_MOUSEPRESENT,就会确定系统中是否安装了鼠标。
Windows可以支持三键的鼠标,三键鼠标包含左键、中键及右键,消息及鼠标的常量命
名中依次用L、M及R标识三个键。单键鼠标的按键被认为是左键。尽管Windows支持多键
鼠标,但大多数应用程序还是主要用左键,其他键反而极少使用。
从Windows 98及Microsoft Windows NT 4.0开始,应用程序也可以支持鼠标滚轮了,鼠标
滚轮可以被按下或者滚动。鼠标滚轮被按下时,担当中键(第三键)的作用,并发送一般的
中键消息。滚轮旋转时,应用程序就会收到滚轮消息。更多信息请参照“鼠标滚轮”节。
从Windows 2000开始,应用程序可以支持应用程序命令键了,这些键被称为X键,使之
能更方便地访问Internet浏览器、电子邮件及媒体服务。当X键按下时,应用程序会收到一
个WM_APPCOMMAND消息。更多信息,请参照WM_APPCOMMAND消息的详细说明。
应用程序通过向GetSystemMetrics传递SM_CMOUSEBUTTONS可以确定鼠标的按键个
数。要为用户设置左手习惯,可以通过SwapMouseButton函数交换意义上的左右键。通过传
递SPI_SETMOUSEBUTTONSWAP给SystemParametersInfo函数也可以调换左右键。注意:
鼠标是一个共享资源,调换左右键同样会影响其他的应用程序。
XBUTTONs
从Windows 2000开始, Microsoft可以支持Microsoft IntelliMouse Explorer,就是一个具有
五个键的鼠标。除了通常的左键、中间及右键外,还包括XBUTTON1及XBUTTON2两个键,
这两个键在使用Microsoft Internet Explorer时可以提供浏览器的前进、后退功能。
Windows管理器通过WM_XBUTTON*及WM_NCXBUTTON*消息可以支持
XBUTTON1、XBUTTON2键,这些消息中WPARAM消息中的高字(HIWORD)包含的一个
标志说明按下了那个X键。由于这些鼠标消息也介于WM_MOUSEFIRST与
WM_MOUSELAST之间,所以应用程序可以通过GetMessage或者PeekMessage筛选所有的
鼠标消息。
Windows 2000/XP: 下面是支持XBUTTON1、XBUTTON2的消息:
WM_APPCOMMAND
WM_NCXBUTTONDBLCLK