7.1 鼠标的基础知识
2015-10-28 10:06
260 查看
摘录于《Windows程序(第5版,珍藏版).CHarles.Petzold 著》P221
Windows 98 支持单键、双键和三键鼠标,并支持利用控制杆或光笔来模拟鼠标。在早期,为了尊重使用单键鼠标的用户,Windows 应用程序都避免使用第二个按钮或第三个按钮。但是,双键鼠标已经成为事实上的标准,因此那种慎用第二个按钮的传统就变得不再合理。的确,第二个按钮现在已经是弹出“上下文菜单”或执行一些特殊拖动(不久会详细解释)的标准。所谓“上下文菜单”,是指出现在普通菜单栏之外的窗口中的菜单。然而,程序不应该依赖于双键鼠标的存在。
理论上,可以利用我们的老相识 GetSystemMetrics 函数来判断是否连接了鼠标:
为了确定所安装鼠标的按钮个数,可以利用以下语句:
习惯用左手的用户可以利用 Windows 控制面板来切换鼠标的按钮。程序也可以通过检查是否调用了带 SM_SWAPBUTTON 参数的 GetSystemMetrics 函数,判断鼠标的按钮是否调用了带 SM_SWAPBUTTON 参数的 GetSystemMetrics 函数,判断鼠标的按钮是否被切换,但是这种方法通常没有必要。食指控制的按钮被认为是左键,即使该按钮在物理位置上位于鼠标的右侧。但是,在一个计算机培训程序汇总,如果想在屏幕上画出一个鼠标,在这种情况下可能需要知道鼠标的按钮是否已被切换。
在控制面板中,还可以设定鼠标的其他参数,比如鼠标双击的速度。从 Windows 应用程序中调用 SystemParametersInfo 函数可以获取或设定这个参数信息。
Windows 为程序提供了几种预定义的鼠标指针。最常用的是斜向箭头,称为 IDC_ARROW(定义在 WINUSER.H 头文件中的标识符)。
箭头的顶点即为热点。IDC_CROSS 指针的热点位于十字型图案的中心。IDC_WAIT 指针呈沙漏形,一般用在程序中表示忙碌状态。程序员还可以设计属于自己的指针。本书会在第 10 章讲述如何设计自定义鼠标指针。对一个具体窗口来说,默认的鼠标指针在定义窗口类结构时就被指定了。例如:
下面的术语描述了对鼠标按钮的操作:
单击 按下鼠标按钮,然后松开。
双击 连续两次快速按下鼠标按钮并松开。
拖动 保持按下按钮,并移动鼠标。
对三键鼠标来说,三个按钮分别被称作左键、中键和右键。Windows 头文件定义了三个与鼠标对应的标识符,分别简写为 LBUTTON、MBUTTON 和 RBUTTON。双键鼠标只有左键和右键,而单键鼠标只有左键。
尽管人们都知道,多只老鼠(老鼠和鼠标在英语中是同一个词 mouse)称为"mice",但是对所谓的多个输入设备,似乎没有人能给出一个确定性答案。“mice” 和 “mouses” 听上去都不合适。在我惯用的参考书 American Heritage Dictionary of the English Language(第三版)中,作者认为这两种说法都是可行的(“mice” 更好一些),而 Microsoft Press Computer Dictionary(第三版)则完全只字未提。
《连线》(Wired)杂志的编辑在 Wired Style:Principles of English Usage in the Digital Age(HardWired, 1996)一书中指出,“mouses”更有利于避免和啮齿动物复数混淆。Doug Engelbart 在 1964 年发明了鼠标,然而他对这个问题也毫无办法。我曾就鼠标的复数问题请教过他,《连线》杂志的编辑也曾问过他同样的问题,他回答说不知道。
最后,以一种高度权威的态度,Microsoft Manual of Style for Technical Publications 告诉我们要“避免使用复数形式 mice; 如果需要表示多个鼠标,可以用 mouse devices 代替”。听上去这像是一种逃避,但是,在没有合理的复数形式的情形下,这的确是十分明智的建议。事实上,大部分可能需要使用“mouse”复数的表达度可以改写成不用复数的形式。比如,“人们像使用多个键盘一样频繁地使用多个鼠标(People use mice almost
as much as keyboards.)”完全可以用“人们像使用键盘一样地使用鼠标(People use the mouse almost as much as the keyboard.)”来替换。
Windows 98 支持单键、双键和三键鼠标,并支持利用控制杆或光笔来模拟鼠标。在早期,为了尊重使用单键鼠标的用户,Windows 应用程序都避免使用第二个按钮或第三个按钮。但是,双键鼠标已经成为事实上的标准,因此那种慎用第二个按钮的传统就变得不再合理。的确,第二个按钮现在已经是弹出“上下文菜单”或执行一些特殊拖动(不久会详细解释)的标准。所谓“上下文菜单”,是指出现在普通菜单栏之外的窗口中的菜单。然而,程序不应该依赖于双键鼠标的存在。
理论上,可以利用我们的老相识 GetSystemMetrics 函数来判断是否连接了鼠标:
fMouse = GetSystemMetrics (SM_MOUSEPRESENT);当鼠标已被安装时,fMouse 的值为 TRUE(非零),否则值为 0。但是,在 Windows 98 中,不论鼠标是否连接上,该函数的返回值总是 TRUE。在 Windows NT 中,该函数的返回值是正确的。
为了确定所安装鼠标的按钮个数,可以利用以下语句:
cButtons = GetSystemMetrics (SM_CMOUSEBUTTONS);若没有安装鼠标,该函数返回值为 0。但是,在 Windows 98 下,该函数在没有安装鼠标时还是返回 2。
习惯用左手的用户可以利用 Windows 控制面板来切换鼠标的按钮。程序也可以通过检查是否调用了带 SM_SWAPBUTTON 参数的 GetSystemMetrics 函数,判断鼠标的按钮是否调用了带 SM_SWAPBUTTON 参数的 GetSystemMetrics 函数,判断鼠标的按钮是否被切换,但是这种方法通常没有必要。食指控制的按钮被认为是左键,即使该按钮在物理位置上位于鼠标的右侧。但是,在一个计算机培训程序汇总,如果想在屏幕上画出一个鼠标,在这种情况下可能需要知道鼠标的按钮是否已被切换。
在控制面板中,还可以设定鼠标的其他参数,比如鼠标双击的速度。从 Windows 应用程序中调用 SystemParametersInfo 函数可以获取或设定这个参数信息。
7.1.1 一些基本术语
当 Windows 用户移动鼠标时,Windows 系统会在显示设备上移动一个位图格式的小图标,称为“鼠标指针”。鼠标指针具有一个单像素精度的“热点”(hot spot)。热点在显示设备上指示了一个精确的位置。当我提到屏幕上鼠标指针的位置时,实际上是指热点的位置。Windows 为程序提供了几种预定义的鼠标指针。最常用的是斜向箭头,称为 IDC_ARROW(定义在 WINUSER.H 头文件中的标识符)。
箭头的顶点即为热点。IDC_CROSS 指针的热点位于十字型图案的中心。IDC_WAIT 指针呈沙漏形,一般用在程序中表示忙碌状态。程序员还可以设计属于自己的指针。本书会在第 10 章讲述如何设计自定义鼠标指针。对一个具体窗口来说,默认的鼠标指针在定义窗口类结构时就被指定了。例如:
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
下面的术语描述了对鼠标按钮的操作:
单击 按下鼠标按钮,然后松开。
双击 连续两次快速按下鼠标按钮并松开。
拖动 保持按下按钮,并移动鼠标。
对三键鼠标来说,三个按钮分别被称作左键、中键和右键。Windows 头文件定义了三个与鼠标对应的标识符,分别简写为 LBUTTON、MBUTTON 和 RBUTTON。双键鼠标只有左键和右键,而单键鼠标只有左键。
7.1.1 鼠标的复数形式是什么?
现在,为了表现我的勇敢,我将直面在替换输入设备领域最具争议的问题之一:“鼠标”的复数形式是什么?尽管人们都知道,多只老鼠(老鼠和鼠标在英语中是同一个词 mouse)称为"mice",但是对所谓的多个输入设备,似乎没有人能给出一个确定性答案。“mice” 和 “mouses” 听上去都不合适。在我惯用的参考书 American Heritage Dictionary of the English Language(第三版)中,作者认为这两种说法都是可行的(“mice” 更好一些),而 Microsoft Press Computer Dictionary(第三版)则完全只字未提。
《连线》(Wired)杂志的编辑在 Wired Style:Principles of English Usage in the Digital Age(HardWired, 1996)一书中指出,“mouses”更有利于避免和啮齿动物复数混淆。Doug Engelbart 在 1964 年发明了鼠标,然而他对这个问题也毫无办法。我曾就鼠标的复数问题请教过他,《连线》杂志的编辑也曾问过他同样的问题,他回答说不知道。
最后,以一种高度权威的态度,Microsoft Manual of Style for Technical Publications 告诉我们要“避免使用复数形式 mice; 如果需要表示多个鼠标,可以用 mouse devices 代替”。听上去这像是一种逃避,但是,在没有合理的复数形式的情形下,这的确是十分明智的建议。事实上,大部分可能需要使用“mouse”复数的表达度可以改写成不用复数的形式。比如,“人们像使用多个键盘一样频繁地使用多个鼠标(People use mice almost
as much as keyboards.)”完全可以用“人们像使用键盘一样地使用鼠标(People use the mouse almost as much as the keyboard.)”来替换。
相关文章推荐
- PL/SQL Developer Oracle Instance Client连接远端数据库
- position与anchorPoint
- 站长、运维必备| 网站可用性监控产品 OneAPM Cloud Test 上线
- 机器学习的最佳入门学习资源
- C++学习(二)
- QT移植到ARM的环境搭建
- c++中的异常安全性
- 【noip2001】数的划分
- Java. ==,equals和equalsIgnoreCase
- CIO与CTO应该要弄懂的IT运维机制
- .NET使用System.Runtime.InteropServices.Marshal实现委托与函数指针互转
- BizTalk开发小技巧
- Thinkphp学习笔记-模板赋值
- floyd算法原理
- Spring3.2异步处理http请求
- 国际化基础
- Chrome解决Adobe Flash Player因过期而遭到阻止
- Java过滤特殊字符的正则表达式
- classpath路径
- Shell脚本:使用rsync备份文件/目录