使用CtoolTipCtrl
导读:本文适用于相对静止的控件,比如按钮,不适用于向树型控件这样的位置不固定的控件(因为树型控件经常被折叠和展开)
CtoolTipCtrl封装了一个工具提示的控件,可弹出一个单行的小窗口来显示一些描述信息,大多时候它是隐藏的,除非用户将光标移到要显示提示的工具上面,并且停留大概半秒的时间它才显示,当单击鼠标或者移走光标的时候这个提示窗口就会消失
例子:给对话框的按钮添加提示功能
具体步骤:
l 首先创建一个对话框程序TestToolTip
l 在TestToolTip类中定义一个CtoolTipCtrl对象
public:
CToolTipCtrl m_pToolTipCtrl;
l 创建一个工具提示控件并关联到m_pToolTipCtrl对象,(位置:OnInitDialog)
风格 | 意义 |
TTS_ALWAYSTIP | 指示当光标在一个工具上时显示工具提示,不管工具提示的属主窗口是否是处于活动状态。没有这个风格,则只有当工具的属主窗口是活动的时候才会显示工具提示控件,否则不显示 |
TTS_NOPREFIX | 这个风格禁止系统将 & 字符从一个字符串中去掉。如果一个工具提示控件没有 TTS_NOPREFIX 风格,则系统自动去掉 & 字符,让应用程序用同一个字符串作为菜单项和工具提示控件中的文本 |
if (!m_pToolTipCtrl.Create(this, TTS_ALWAYSTIP))
{
TRACE(_T("Unable To create ToolTip/n"));
return FALSE;
}
l 调用AddTool向工具提示添加注册,这样当光标移动到工具上才能显示信息
m_pToolTipCtrl.AddTool(GetDlgItem(IDOK),_T("确定按钮,点击关闭对话框"));
l 添加虚函数PreTranslateMessage
BOOL CTestToolTipDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message== WM_LBUTTONDOWN ||
pMsg->message== WM_LBUTTONUP ||
pMsg->message== WM_MOUSEMOVE)
m_pToolTipCtrl.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
效果图:
若在树型控件中使用tool tip
参考:http://www.codeproject.com/treectrl/treetooltip.asp