日韩av无码中文字幕,国产午夜亚洲精品国产成人小说,成人影院午夜男女爽爽爽,欧美 亚洲 中文 国产 综合

首頁(yè) 熱點(diǎn) 要聞 國(guó)內(nèi) 產(chǎn)業(yè) 財(cái)經(jīng) 滾動(dòng) 理財(cái) 股票

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

2023-08-30 18:59:47 來(lái)源 : 個(gè)人圖書館-漫漫開(kāi)發(fā)路

當(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è)置工具提示的精確顯示位置。


(相關(guān)資料圖)

下面是一段例子代碼,其中添加了對(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)畫仍在進(jìn)行,如果動(dòng)畫是幻燈片動(dòng)畫,則尤其會(huì)分散注意力。這很容易解決:調(diào)整我們創(chuàng)建工具提示控件的方式。

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

大功告成!

以上就是實(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è)功能吧!

最后

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

關(guān)鍵詞:
相關(guān)文章

最近更新
精彩推送