偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

軟件的可用性改善:善用幫助信息

開(kāi)發(fā) 前端
通過(guò)設(shè)置 TTF_SUBCLASS 標(biāo)志,我們指示工具提示控件應(yīng)子類化我們的窗口以攔截鼠標(biāo)消息。這是一種靈活的方法,可以避免我們不得不使用 TTM_RELAYEVENT 消息手動(dòng)轉(zhuǎn)發(fā)鼠標(biāo)消息。

當(dāng)我們吭哧吭哧的開(kāi)發(fā)功能性模塊的時(shí)候,也需要回頭思考一下軟件的可用性。今天的主題就是使用幫助信息來(lái)改善軟件的可用性,讓軟件不僅”能用”,也更”好用”。

幫助信息,也叫工具提示(Tooltip)。當(dāng)用戶的鼠標(biāo)懸停在一段文字或者控件上時(shí),會(huì)自動(dòng)顯示相關(guān)的幫助信息。例如,如果一個(gè)控件上的字符串沒(méi)有足夠的控件顯示,當(dāng)鼠標(biāo)懸停在控件上時(shí),可以通過(guò)工具提示來(lái)顯示完整的字符串。

實(shí)現(xiàn)工具提示的一個(gè)關(guān)鍵點(diǎn)是對(duì) TTN_SHOW 通知消息的處理,此消息可以用來(lái)在工具提示顯示之前設(shè)置它的顯示位置。
另外一個(gè)要處理的消息是 TTM_ADJUSTRECT,它可以用來(lái)設(shè)置工具提示的精確顯示位置。

下面是一段例子代碼,其中添加了對(duì)工具提示的支持。

代碼解析

我們聲明了一些變量之后,我們來(lái)深入看看創(chuàng)建窗口的過(guò)程。首先,我們調(diào)用 CreateWindowEx 創(chuàng)建工具提示窗口,將主窗口設(shè)置為工具提示窗口的所有者(這一點(diǎn)對(duì)于獲得正確的 Z 順序行為非常重要)。

然后,我們獲取字體并將其設(shè)置到工具提示控件中,以便工具提示以與我們相同的字體呈現(xiàn)。

然后,我們測(cè)量目標(biāo)字體中的文本,并將 g_rcText 矩形設(shè)置為該文本的尺寸。我們使用該矩形在工具提示控件中建立工具的邊界。

通過(guò)設(shè)置 TTF_SUBCLASS 標(biāo)志,我們指示工具提示控件應(yīng)子類化我們的窗口以攔截鼠標(biāo)消息。這是一種靈活的方法,可以避免我們不得不使用 TTM_RELAYEVENT 消息手動(dòng)轉(zhuǎn)發(fā)鼠標(biāo)消息。

繪制工具提示就比較簡(jiǎn)單了,我們只需要選擇字體和繪制文本就可以了。

運(yùn)行這個(gè)例子,我們將鼠標(biāo)懸停在文本上。我們可以看到工具提示會(huì)顯示出來(lái),但它顯示到了錯(cuò)誤的位置。
不過(guò),除此之外,事情正在按預(yù)期進(jìn)行。工具提示具有正確的字體,僅當(dāng)鼠標(biāo)懸停在文本本身上時(shí)觸發(fā),當(dāng)鼠標(biāo)離開(kāi)文本時(shí)關(guān)閉。讓我們來(lái)解決工具提示顯示位置的問(wèn)題,代碼如下圖所示:

TTN_SHOW 通知消息在即將顯示工具提示時(shí)發(fā)送。我們通過(guò)將文本矩形映射到屏幕坐標(biāo)并使用 TTM_ADJUSTRECT 消息擴(kuò)展矩形以包含工具提示控件將在文本周圍放置的所有邊距和邊框來(lái)響應(yīng)通知。
這樣,當(dāng)我們將工具提示放置在該位置時(shí),邊距和邊框會(huì)精確匹配,并且文本將顯示在所需位置。
返回 TRUE 以向工具提示控件指示我們已負(fù)責(zé)定位窗口,并且它不應(yīng)執(zhí)行其默認(rèn)定位,這一點(diǎn)很重要。

我們?cè)俅芜\(yùn)行例子程序,你會(huì)發(fā)現(xiàn)還有另一個(gè)問(wèn)題:工具提示動(dòng)畫(huà)仍在進(jìn)行,如果動(dòng)畫(huà)是幻燈片動(dòng)畫(huà),則尤其會(huì)分散注意力。這很容易解決:調(diào)整我們創(chuàng)建工具提示控件的方式。

TTS_NOANIMATE 樣式可以用來(lái)禁止動(dòng)畫(huà),這意味著工具提示只是彈出來(lái)并不再顯示動(dòng)畫(huà),這正是我們想要的。

大功告成!

以上就是實(shí)現(xiàn)工具提示的基礎(chǔ)知識(shí)。
當(dāng)然,可能你想處理更多細(xì)節(jié),例如僅在字符串被剪切時(shí)才顯示工具提示。但是這些問(wèn)題與工具提示無(wú)關(guān),因此我不會(huì)在這里討論它們,可能在以后的時(shí)間我們會(huì)來(lái)探討這個(gè)問(wèn)題。

總結(jié)

如果時(shí)常以用戶的角度來(lái)使用軟件,你會(huì)發(fā)現(xiàn):工具提示真的是一個(gè)十分十分好用的特性。
那么,現(xiàn)在立即就在你的軟件里加上這個(gè)功能吧!

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2024-08-13 15:42:19

2024-09-27 17:58:11

2022-05-19 09:42:16

數(shù)據(jù)庫(kù)存儲(chǔ)分布式數(shù)據(jù)庫(kù)

2009-12-25 09:36:22

惠普電信行業(yè)

2012-09-07 09:57:14

2009-12-25 18:14:06

惠普實(shí)時(shí)策略電信

2024-02-27 09:48:25

Redis集群數(shù)據(jù)庫(kù)

2012-02-13 23:20:18

linux集群高可用

2017-08-24 17:05:06

2012-07-04 11:21:07

OpenStack

2013-11-19 17:13:52

關(guān)鍵業(yè)務(wù)軟件定義

2013-11-19 17:50:33

Linux輔助軟件

2009-04-16 15:34:35

SQL Server

2011-02-17 08:49:49

WebHTMLCSS

2012-09-04 13:43:31

SQL Server

2013-08-28 10:30:39

vSphere

2014-05-14 09:43:01

SUSE私有云

2021-05-24 09:15:42

Go熔斷熔斷器

2011-02-18 17:54:36

網(wǎng)站首頁(yè) PET

2013-12-04 09:52:50

hadoop
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)