亚洲 日韩 激情 无码 中出,无码人妻久久一区二区三区蜜桃,亚无码乱人伦一区二区,四虎影视永久免费观看,四虎成人精品一区二区免费网站

Windows將鼠標(biāo)單擊轉(zhuǎn)換為雙擊的原理(鼠標(biāo)變成雙擊)

小編:霸主 更新時(shí)間:2022-09-04 23:59

對(duì)于這個(gè)問(wèn)題,我還是建議你先看看MSDN技術(shù)文檔中關(guān)于鼠標(biāo)點(diǎn)擊方面的內(nèi)容,因?yàn)檫@些內(nèi)容是我們開(kāi)展研究的起點(diǎn)。我也假定你基本了解鼠標(biāo)的單擊轉(zhuǎn)換為雙擊的基本工作原理。

在閱讀了相關(guān)的MSDN文檔之后,下面我們來(lái)看看文檔中的設(shè)計(jì)以及它如何影響你自己的用戶界面設(shè)計(jì)。

有些開(kāi)發(fā)者將鼠標(biāo)雙擊動(dòng)作設(shè)計(jì)為執(zhí)行不同于鼠標(biāo)單機(jī)的獨(dú)立任務(wù)。他們想知道是否可以在處理鼠標(biāo)雙擊消息時(shí),安全的忽略掉WM_LBUTTONDOWN這個(gè)消息。

當(dāng)鼠標(biāo)按鈕被第一次按下的時(shí)候,窗口管理器不知道接下來(lái)會(huì)不會(huì)有第二次點(diǎn)擊。(有時(shí)候用戶自己可能也不知道) 所以它會(huì)發(fā)出WM_LBUTTONDOWN消息并等待后面的更多消息。

現(xiàn)在,假設(shè)你是一個(gè)程序員,你仍然希望繼續(xù)采用讓雙擊操作與單擊操作無(wú)關(guān)的設(shè)計(jì)方案。你會(huì)怎么做呢?

能想到的一種方法是,在收到 WM_LBUTTONDOWN 消息時(shí)不做任何事情,除了設(shè)置一個(gè)計(jì)時(shí)器以在 GetDoubleClickTime() 毫秒內(nèi)觸發(fā)。如果在該時(shí)間內(nèi)收到 WM_LBUTTONDBLCLK 消息,那么則認(rèn)為發(fā)生了雙擊動(dòng)作。 如果沒(méi)有,那么它一定是單擊,因此可以執(zhí)行單擊操作(雖然稍微有些延遲)。

如果你沒(méi)有設(shè)計(jì)雙擊事件處理,那么,這種基于等待的技術(shù)方案也是必要的,但是第二次單擊與第一次單擊一起會(huì)導(dǎo)致麻煩。為什么這是必要的? 因?yàn)楹芏嘤脩粼趦H需要單擊的情況下,也會(huì)雙擊。以下是可以看到“避免第二次點(diǎn)擊的延遲操作”的一些示例:

> 為任務(wù)欄通知圖標(biāo)顯示的上下文菜單。如果第一次單擊時(shí)上下文菜單立即出現(xiàn),那么第二次單擊將關(guān)閉上下文菜單,讓用戶感到困惑。 “我點(diǎn)擊了一下,發(fā)生了一些事情,然后它就消失了?!?(用戶不會(huì)說(shuō)“我雙擊了”;他們只是說(shuō)他們點(diǎn)擊了。雙擊是他們唯一知道怎么做的事情,所以他們只是稱之為“點(diǎn)擊”。舉個(gè)例子,如果你只有一輛車(chē),那么,你不會(huì)說(shuō) “今天我開(kāi)的是我的藍(lán)色車(chē)”。)

> 如果資源管理器處于一鍵模式,它會(huì)等待查看是否有第二次點(diǎn)擊,如果有,它會(huì)忽略它。 否則,當(dāng)人們雙擊時(shí),他們會(huì)啟動(dòng)該程序的兩個(gè)副本。 如果你禁止第二次點(diǎn)擊但不等待,那么他們啟動(dòng)的程序就會(huì)卡在資源管理器窗口后面,因?yàn)橛脩粼趩?dòng)程序后點(diǎn)擊了資源管理器。

> XP 風(fēng)格的開(kāi)始按鈕忽略第二次點(diǎn)擊。 否則,當(dāng)人們雙擊“開(kāi)始”按鈕時(shí),第一次單擊將打開(kāi)“開(kāi)始”菜單,第二次單擊將關(guān)閉它! (這有時(shí)被稱為“去抖動(dòng)”。)

我們來(lái)看看一個(gè)關(guān)于延遲鼠標(biāo)點(diǎn)擊的實(shí)現(xiàn)代碼。

Windows將鼠標(biāo)單擊轉(zhuǎn)換為雙擊的原理(鼠標(biāo)變成雙擊)

請(qǐng)注意,因?yàn)槲覀冋谔幚淼氖鞘髽?biāo)雙擊事件,所以這里我們需要將CS_DBLCLKS屬性打開(kāi)。

wc.style = CS_DBLCLKS;

運(yùn)行此程序時(shí),單擊并雙擊客戶區(qū)。 請(qǐng)注意,該程序直到雙擊超時(shí)后才會(huì)對(duì)單擊做出反應(yīng),因?yàn)樗诘却榭茨闶欠褚^續(xù)第二次單擊(因此是雙擊而不是單擊)。

后面我們會(huì)說(shuō)說(shuō)高于兩次的鼠標(biāo)點(diǎn)擊的情況。

畢竟操作系統(tǒng)不是神仙,它需要盡一切可能去理解用戶的點(diǎn)擊行為。

有時(shí)候,這真是太難了。

最后

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關(guān)于Windows的小知識(shí),對(duì)于廣大Windows平臺(tái)開(kāi)發(fā)者來(lái)說(shuō),確實(shí)十分有幫助。

本文來(lái)自:《Logical consequences of the way Windows converts single-clicks into double-clicks》

最近我寫(xiě)了個(gè)東西

正如你們所知道的,拓?fù)涿窢栔腔坜k公平臺(tái)(Topomel Box)是一款綠色軟件,主要面向經(jīng)常使用電腦的朋友。它提供了各種提升辦公效率的小功能,同時(shí)操作上盡可能地簡(jiǎn)單方便。

我想:你值得擁有。

Windows將鼠標(biāo)單擊轉(zhuǎn)換為雙擊的原理(鼠標(biāo)變成雙擊)