我们经常在一些软件中看到类似的功能:鼠标移动到一个按钮(或其他控件)上的时候,自动弹出一些提示(不是弹出对话框),以提醒用户该控件的作用或注意事项。这种提示就是所说的Tooltip(如图1所示)。关于Tooltip,网上已经有很多资料了,我在这里只是给大家提供一些链接,让没有做过的朋友能在最短的时间内实现这个功能。
图1
Codeproject已经有许多现成的Tooltip类,并且有的功能非常之强,可以直接拿来用,这会为你节省许多时间!具体链接及说明如下:
(1)XSuperTooltip - Office 2007 Super Tooltip class 地址:http://www./useritems/XSuperTooltip.asp 说明:这是一个功能相当强大的Tooltip类,它实现了Office 2007风格的Tooltip,当然,初次接触它的话,你肯定要花更多的时间去学习怎么用,我没有用过这个类,因为它所实现的效果远远超过了我软件中的需求,所以,这个类适合那些想让自己的软件Tooltip非常炫的朋友。
(2)CPPToolTip 地址:http://www./miscctrl/pptooltip.asp 说明:这个类同样强大,你可以看一下上面链接中它的图例,我也没有去仔细看,因为它花哨的功能我也用不了这么多。
(3)CXInfoTip - Information Tooltip 地址:http://www./miscctrl/xinfotip.asp
说明:这个类是本文介绍的重点,它实现了我的要求,上面的图1就是我用它做出来的效果。
说一下这个类的使用(非常简单):
以VC.NET 2003为例,新建一个基于对话框的MFC应用程序,在该工程中添加XInfoTip.cpp 及 XInfoTip.h 文件(这两个文件在上面的Codeproject链接中你可以找到)。然后在你需要实现Tooltip的对话框类中添加CXInfoTip成员变量(如果有多个Tooltip,请依次添加)m_tip1,然后在OnInitDialog()函数中(如果是子窗口,则需重载子对话框类的该函数,否则看不到这个函数——这是基础知识)添加以下两句代码:
m_tip1.Create(this);
m_tip1.AddTool(GetDlgItem(IDC_COMBO_COMPORT),
AddTool()的第一个参数意思是:当鼠标移动到哪一个控件上的时候弹出Tooltip,这里用GetDlgItem来获取句柄就可以了,上面的代码写得非常明白,一看就懂吧?第二个参数是设置弹出的Tooltip中的内容,其中/n是换行符(地球人都知道)。关于第三个参数,可用LoadIcon()函数来加载一个图标显示在Tooltip中(如图1所示),可查MSDN,用法非常简单。
这样做之后,你就差最后一步就可以完成了,即:重载你用到Tooltip的对话框类的PreTranslateMessage()函数(别告诉我你不知道怎么重载哟~),然后将里面的代码改成如下所示:
{
// TODO: 在此添加专用代码和/或调用基类
m_tip1.RelayEvent(pMsg); //添加这一句
return CDialog::PreTranslateMessage(pMsg);
}
好了,大功告成!编译一下试试看,再把鼠标移动到控件上,是不是弹出了很酷的Tooltip?
本文只涉及到了该类的很简单的功能使用,关于改变Tooltip中文字的字体、控制Tooltip显示时间等操作,请参阅Codeproject链接中作者的文章以及Demo。
还有几个类似的,在此一并给出链接:
(4)Message Balloons 地址:http://www./dialog/message_balloons.asp (5)A multiline extended tooltip control 地址:http://www./miscctrl/tooltipex.asp (6)Display ToolTip in any place on the screen 地址:http://www./miscctrl/tooltipzen.asp (7)RichText Tool-tip Control 地址:http://www./Articles/9828/RichText-Tool-tip-Control
引用:http://lingfengme./5716026.html (###) |
|