读书人

Windows程式开发设计指南(7)滑鼠

发布时间: 2012-09-05 15:19:35 作者: rapoo

Windows程式开发设计指南(七)滑鼠

7. 滑鼠

滑鼠是有一个或多个键的定位设备。虽然也可以使用诸如触摸画面和光笔之类的输入设备,但是只有滑鼠以及常用在膝上型电脑上的轨迹球等才是渗透了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) ;

下面是一些描述滑鼠按键动作的术语:

读书人网 >windows

热点推荐