CToolTipCtrl应用

本文介绍如何使用CtoolTipCtrl控件为MFC应用程序中的按钮等控件添加工具提示功能,包括创建控件、注册工具提示及响应鼠标事件的方法。

       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);

   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值