一、Windows鼠标基础
鼠标是有一个或多个键的定位设备。虽然也可以使用诸如触摸画面和光笔之类的输入设备,但是只有鼠标以及常用在膝上型计算机上的轨迹球等才是渗透了PC市场的唯一输入设备。
情况并非总是如此。当然,Windows的早期开发人员认为他们不应该要求使用者为了执行其产品而必须买只鼠标。因此,他们将鼠标作为一种选择性的附加设备,而为Windows中的所有操作以及applet提供一种键盘接口(例如,查看Windows小算盘程序的在线说明信息,可以看到每个按钮都提供了一个同等功效的键盘操作方式)。第三方软件开发人员使用键盘接口来提供与鼠标操作相同的功能,这本书以前的版本也是这么做的。
理论上来说,现在的Windows需要鼠标。至少,一些消息框是这样讲的。当然,您也可以拔下鼠标,而且Windows仍然可以执行良好(只有消息框会提示您没有连接鼠标)。试图不用鼠标来使用Windows就像用脚趾来弹钢琴一样(至少在最初的一段时间里是这样),但您依然可以这样做。正因为如此,我还是喜欢为鼠标功能提供键盘操作。打字员尤其喜欢让他们的手保持在键盘上,并且我认为每个人都有在杂乱的桌上找不到鼠标,或者鼠标移动不灵敏的经验。使用键盘通常不需要花费更多的精力和努力,并且为喜欢使用键盘的人提供更多的功能。
我们通常认为,键盘便于输入和操作文字数据,而鼠标则便于画图和操作图形对象。实际上,本章大多数的范例程序都画了一些图形,并且用到了我们在第五章所学到的知识。
Windows 98能支持单键、双键或者三键鼠标,也可以使用摇杆或者光笔来仿真单键鼠标。早期,由于许多使用者都有单键鼠标,所以Windows应用程序总是避免使用双键或三键鼠标。不过,由于双键鼠标已经成为事实上的标准,因此不使用第二个键的传统已经不再合理了。当然,第二个鼠标按键是用于启动一个「快捷菜单」,亦即出现在普通菜单列之外的窗口中菜单,或者用于特殊的拖曳操作(拖曳将在后面加以解释)。然而,程序不能依赖双键鼠标。
理论上,您可以用我们的老朋友GetSystemMetrics函数来确认鼠标是否存在:
fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ;
如果已经安装了鼠标,fMouse将传回TRUE(非0);如果没有安装,则传回0。然而,在Windows 98中,不论鼠标是否安装,此函数都将传回TRUE 。在Microsoft Windows NT中,它可以正常工作。
要确定所安装鼠标其上按键的个数,可使用
cButtons = GetSystemMetrics (SM_CMOUSEBUTTONS) ;
如果没有安装鼠标,那么函数将传回0。然而,在Windows 98下,如果没有安装鼠标,此函数将传回2。
习惯用左手的使用者可以使用Windows的「控制台」来切换鼠标按键。虽然应用程序可以通过在GetSystemMetrics中使用SM_SWAPBUTTON参数来确定是否进行了这种切换,但通常没有这个必要。由食指触发的键被认为是左键,即使事实上是位于鼠标的右边。不过,在一个教育训练程序中,您可能想在屏幕上画一个鼠标,在这种情况下,您可能想知道鼠标按键是否被切换过了。
您可以在「控制台」中设定鼠标的其它参数,例如双击速度。从Windows应用程序,通过使用SystemParametersInfo函数可以设定或获得此项信息。
一些简单的定义
当Windows使用者移动鼠标时,Windows在显示器上移动一个称为「鼠标光标」的小位图。鼠标光标有一个指向显示器上精确位置的单图素「热点」。当我提到鼠标光标在屏幕上的位置时,指的是热点的位置。
Windows支持几种预先定义的鼠标光标,程序可以使用这些光标。最常见的是称为IDC_ARROW的斜箭头(在WINUSER.H中定义)。热点在箭头的顶端。IDC_CROSS光标(在本章后面的BLOKOUT程序中有用到)的热点在十字交叉线的中心。IDC_WAIT光标是一个沙漏,通常用于指示程序正在执行。程序写作者也可以设计自己的光标。我们将在第十章学习设计方法。在定义窗口类别结构时指定特定窗口的内定光标,例如:
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
下面是一些描述鼠标按键动作的术语:
-
Clicking按下并放开一个鼠标按键。
-
Double-clicking快速按下并放开鼠标按键两次。
-
Dragging按住鼠标按键并移动鼠标。
对三键鼠标来说,三个键分别称为左键、中键、右键。在Windows表头文件中定义的与鼠标有关的标识符使用缩写LBUTTON、MBUTTON和RBUTTON。双键鼠标只有左键与右键,单键鼠标只有一个左键。
鼠标(Mouse)的复数
现在,为了展现我的勇气,我将面对输入设备最难辩的争论话题:什么是「mouse」的复数。虽然每个人都知道多只啮齿动物称为mice,似乎没有人对该如何称呼多个输入设备有最后的答案。不管「mice」或「mouse」听起来都不对劲。我惯常参考的《American Heritage Dictionary of the English Language》第三版则只字未提。
《Wired style:Principles of English Usage in the Digital Age》(HardWired, 1996)指出「mouse」比较好,以避免与啮齿动物搞混。在1964发明鼠标的Doug Engelbart对此争议也帮不上忙。我曾经问过他mouse的复数是什么,他说我不知道。
最后,高权威的Microsoft Manual of Style for Technical Publications告诉我们「避免使用复数mice。假如你必须提到多只mouse,使用mouse devices」。这听起来像是在逃避问题,但当一切听起来都不对劲时,它确实是个明智的忠告了。事实上,大部分需要mouse复数的句子都能重新修改来避开。例如,试着说"People use the almost as much as keyboard",而不是"Pople use mice almost as much as keyboards"。