CtoolTipCtrl封装了一个工具提示的控件,可弹出一个单行的小窗口来显示一些描述信息,大多时候它是隐藏的,除非用户将光标移到要显示提示的工具上面,并且停留大概半秒的时间它才显示,当单击鼠标或者移走光标的时候这个提示窗口就会消失
例子:给对话框的按钮添加提示功能
具体步骤:
1 首先创建一个基于对话框的应用程序ToolTips
2 在ToolTipsDlg类中定义一个CtoolTipCtrl对象
class CToolTipsDlg : public CDialog
{
// Construction
public:
CToolTipsDlg(CWnd* pParent = NULL); // standard constructor
CToolTipCtrl m_pToolTipCtrl;
3 创建一个工具提示控件(如按钮或静态文本框)并关联到m_pToolTipCtrl对象,(位置:OnInitDialog)
BOOL CToolTipsDlg::OnInitDialog()
{ .......
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
if (!m_pToolTipCtrl.Create(this, TTS_ALWAYSTIP))
{
TRACE(_T("Unable To create ToolTip\n"));
return FALSE;
}
m_pToolTipCtrl.AddTool(GetDlgItem(IDC_BTN_TEST),_T("测试按钮"));
return TRUE; // return TRUE unless you set the focus to a control
}
Create函数中第二个参数:风格-意义 TTS_ALWAYSTIP ,指示当光标在一个工具上时显示工具提示,不管工具提示的属主窗口是否是处于活动状态。没有这个风格,则只有当工具的属主窗口是活动的时候才会显示工具提示控件,否则不显示;TTS_NOPREFIX这个风格禁止系统将 & 字符从一个字符串中去掉。如果一个工具提示控件没有 TTS_NOPREFIX 风格,则系统自动去掉 & 字符,让应用程序用同一个字符串作为菜单项和工具提示控件中的文本
4 调用AddTool向工具提示添加注册,这样当光标移动到工具上才能显示信息(如上一步代码)
m_pToolTipCtrl.AddTool(GetDlgItem(IDOK),_T("确定按钮,点击关闭对话框"));
5 右键单击类CToolTipsDlg 添加虚函数PreTranslateMessage
BOOL CToolTipsDlg::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);
}