我們經(jīng)常在一些軟件中看到類似的功能:鼠標(biāo)移動(dòng)到一個(gè)按鈕(或其他控件)上的時(shí)候,自動(dòng)彈出一些提示(不是彈出對(duì)話框),以提醒用戶該控件的作用或注意事項(xiàng)。這種提示就是所說的Tooltip(如圖1所示)。關(guān)于Tooltip,網(wǎng)上已經(jīng)有很多資料了,我在這里只是給大家提供一些鏈接,讓沒有做過的朋友能在最短的時(shí)間內(nèi)實(shí)現(xiàn)這個(gè)功能。
圖1
Codeproject已經(jīng)有許多現(xiàn)成的Tooltip類,并且有的功能非常之強(qiáng),可以直接拿來用,這會(huì)為你節(jié)省許多時(shí)間!具體鏈接及說明如下:
(1)XSuperTooltip - Office 2007 Super Tooltip class 地址:http://www.codeproject.com/useritems/XSuperTooltip.asp
說明:這是一個(gè)功能相當(dāng)強(qiáng)大的Tooltip類,它實(shí)現(xiàn)了Office 2007風(fēng)格的Tooltip,當(dāng)然,初次接觸它的話,你肯定要花更多的時(shí)間去學(xué)習(xí)怎么用,我沒有用過這個(gè)類,因?yàn)樗鶎?shí)現(xiàn)的效果遠(yuǎn)遠(yuǎn)超過了我軟件中的需求,所以,這個(gè)類適合那些想讓自己的軟件Tooltip非常炫的朋友。
(2)CPPToolTip 地址:http://www.codeproject.com/miscctrl/pptooltip.asp
說明:這個(gè)類同樣強(qiáng)大,你可以看一下上面鏈接中它的圖例,我也沒有去仔細(xì)看,因?yàn)樗ㄉ诘墓δ芪乙灿貌涣诉@么多。
?。ǎ常?/span>CXInfoTip - Information Tooltip 地址:http://www.codeproject.com/miscctrl/xinfotip.asp
說明:這個(gè)類是本文介紹的重點(diǎn),它實(shí)現(xiàn)了我的要求,上面的圖1就是我用它做出來的效果。
說一下這個(gè)類的使用(非常簡(jiǎn)單):
以VC.NET 2003為例,新建一個(gè)基于對(duì)話框的MFC應(yīng)用程序,在該工程中添加XInfoTip.cpp 及 XInfoTip.h 文件(這兩個(gè)文件在上面的Codeproject鏈接中你可以找到)。然后在你需要實(shí)現(xiàn)Tooltip的對(duì)話框類中添加CXInfoTip成員變量(如果有多個(gè)Tooltip,請(qǐng)依次添加)m_tip1,然后在OnInitDialog()函數(shù)中(如果是子窗口,則需重載子對(duì)話框類的該函數(shù),否則看不到這個(gè)函數(shù)——這是基礎(chǔ)知識(shí))添加以下兩句代碼:
m_tip1.Create(this);
m_tip1.AddTool(GetDlgItem(IDC_COMBO_COMPORT),
_T("串口未正確連接的話/n/n將導(dǎo)致系統(tǒng)不能運(yùn)作!"), //Tooltip的內(nèi)容
::LoadIcon(NULL, IDI_WARNING)); //加載一個(gè)警告圖標(biāo)
AddTool()的第一個(gè)參數(shù)意思是:當(dāng)鼠標(biāo)移動(dòng)到哪一個(gè)控件上的時(shí)候彈出Tooltip,這里用GetDlgItem來獲取句柄就可以了,上面的代碼寫得非常明白,一看就懂吧?第二個(gè)參數(shù)是設(shè)置彈出的Tooltip中的內(nèi)容,其中/n是換行符(地球人都知道)。關(guān)于第三個(gè)參數(shù),可用LoadIcon()函數(shù)來加載一個(gè)圖標(biāo)顯示在Tooltip中(如圖1所示),可查MSDN,用法非常簡(jiǎn)單。
這樣做之后,你就差最后一步就可以完成了,即:重載你用到Tooltip的對(duì)話框類的PreTranslateMessage()函數(shù)(別告訴我你不知道怎么重載喲~),然后將里面的代碼改成如下所示:
{
// TODO: 在此添加專用代碼和/或調(diào)用基類
m_tip1.RelayEvent(pMsg); //添加這一句
return CDialog::PreTranslateMessage(pMsg);
}
好了,大功告成!編譯一下試試看,再把鼠標(biāo)移動(dòng)到控件上,是不是彈出了很酷的Tooltip?
本文只涉及到了該類的很簡(jiǎn)單的功能使用,關(guān)于改變Tooltip中文字的字體、控制Tooltip顯示時(shí)間等操作,請(qǐng)參閱Codeproject鏈接中作者的文章以及Demo。
還有幾個(gè)類似的,在此一并給出鏈接:
?。?/span>4)Message Balloons 地址:http://www.codeproject.com/dialog/message_balloons.asp
?。?/span>5)A multiline extended tooltip control 地址:http://www.codeproject.com/miscctrl/tooltipex.asp
?。?/span>6)Display ToolTip in any place on the screen 地址:http://www.codeproject.com/miscctrl/tooltipzen.asp
(7)RichText Tool-tip Control 地址:http://www.codeproject.com/Articles/9828/RichText-Tool-tip-Control
引用:http://lingfengme.bokee.com/5716026.html
(###)
聯(lián)系客服