IT袋

当前位置:主页 > 对比评测 >

鼠标单击变双击什么原因造成的

鼠标单击变双击什么原因造成的 详解鼠标左键单击和双击的区别

更新:2023-09-03 18:28:09 来源:IT袋 作者:苏晓敏
导读:鼠标单击变双击什么原因造成的,一个电脑小知识,为大家介绍鼠标单击变双击什么原因造成的和详解鼠标左键单击和双击的区别的相关经验,如有不对的地方欢迎指正! 对于这个问题,我还是建议你先

鼠标单击变双击什么原因造成的

一个电脑小知识,为大家介绍鼠标单击变双击什么原因造成的和详解鼠标左键单击和双击的区别的相关经验,如有不对的地方欢迎指正!

对于这个问题,我还是建议你先看看MSDN技术文档中关于鼠标点击方面的内容,因为这些内容是我们开展研究的起点。我也假定你基本了解鼠标的单击转换为双击的基本工作原理。

在阅读了相关的MSDN文档之后,下面我们来看看文档中的设计以及它如何影响你自己的用户界面设计。

首先,有些开发者将鼠标双击动作设计为执行不同于鼠标单机的独立任务。他们想知道是否可以在处理鼠标双击消息时,安全的忽略掉WM_LBUTTONDOWN这个消息。

当鼠标按钮被第一次按下的时候,窗口管理器不知道接下来会不会有第二次点击。(有时候用户自己可能也不知道) 所以它会发出WM_LBUTTONDOWN消息并等待后面的更多消息。

现在,假设你是一个程序员,你仍然希望继续采用让双击操作与单击操作无关的设计方案。你会怎么做呢?
能想到的一种方法是,在收到 WM_LBUTTONDOWN 消息时不做任何事情,除了设置一个计时器以在 GetDoubleClickTime() 毫秒内触发。如果在该时间内收到 WM_LBUTTONDBLCLK 消息,那么则认为发生了双击动作。 如果没有,那么它一定是单击,因此可以执行单击操作(虽然稍微有些延迟)。

如果你没有设计双击事件处理,那么,这种基于等待的技术方案也是必要的,但是第二次单击与第一次单击一起会导致麻烦。为什么这是必要的? 因为很多用户在仅需要单击的情况下,也会双击。以下是可以看到“避免第二次点击的延迟操作”的一些示例:

> 为任务栏通知图标显示的上下文菜单。如果第一次单击时上下文菜单立即出现,那么第二次单击将关闭上下文菜单,让用户感到困惑。 “我点击了一下,发生了一些事情,然后它就消失了。” (用户不会说“我双击了”;他们只是说他们点击了。双击是他们唯一知道怎么做的事情,所以他们只是称之为“点击”。举个例子,如果你只有一辆车,那么,你不会说 “今天我开的是我的蓝色车”。)

> 如果资源管理器处于一键模式,它会等待查看是否有第二次点击,如果有,它会忽略它。 否则,当人们双击时,他们会启动该程序的两个副本。 此外,如果你禁止第二次点击但不等待,那么他们启动的程序就会卡在资源管理器窗口后面,因为用户在启动程序后点击了资源管理器。

> XP 风格的开始按钮忽略第二次点击。 否则,当人们双击“开始”按钮时,第一次单击将打开“开始”菜单,第二次单击将关闭它! (这有时被称为“去抖动”。)

接下来,我们来看看一个关于延迟鼠标点击的实现代码。

相关阅读