• MFC中添加ToolTip提示框


    PART 1 MFC 对话框中的 Buttton添加提示

    例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下:

    1. 在该对话框的类中添加一个CToolTipCtrl类型成员,并在适当的地方将其初始化如下:

    m_ToolTipCtrl.Create(this);
    m_ToolTipCtrl.AddTool(GetDlgItem(IDC_BUTTON1), _T("This is ToolTip"));
    m_ToolTipCtrl.SetMaxTipWidth(123);
    m_ToolTipCtrl.Activate(TRUE);

    2. 给对画框类添加virtual BOOL PreTranslateMessage(MSG* pMsg)方法并实现如下:

    BOOL CtooltipsDlg::PreTranslateMessage(MSG* pMsg)
    {
    ASSERT(pMsg != NULL);
    if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
    m_ToolTipCtrl.RelayEvent(pMsg);
    return CDialogEx::PreTranslateMessage(pMsg);
    }

    OK,现在当鼠标划过该button,就会出现This is ToolTip字样的Tooltip。很简单,留着以后用。

    PART 2  MFC 对话框中的其它控件添加提示

    为窗口或其中的控件添加提示框,可以使用MFC的类CToolTipCtrl,使用方法如下

    1.在窗口的类定义中添加变量说明:
    class CTooltipTestDlg : public CDialog{

    public:
    CToolTipCtrl m_tt;


    }

    2.在对话框的OnInitDialog()函数中添加如下代码

        EnableToolTips(TRUE);
        m_tt.Create(this);
        m_tt.Activate(TRUE);

        CWnd* pW=GetDlgItem(IDC_CHECK1);//得到控件的指针
        m_tt.AddTool(pW,L"Check1lakjsfasfdasfd");//为此控件添加tip

    3.重载父窗口的 BOOL PreTranslateMessage(MSG* pMsg) ,在函数中调用 m_tt.RelayEvent(pMsg)

    BOOL CTooltipTestDlg::PreTranslateMessage(MSG* pMsg)
    {
        // TODO: Add your specialized code here and/or call the base class

        if (NULL != m_tt.GetSafeHwnd())
        {
            m_tt.RelayEvent(pMsg);
        }


        return CDialog::PreTranslateMessage(pMsg);
    }

    这样就完成了为控件添加Tip。

    如果想修改已添加的tip的内容,可以使用UpdateTipText函数,如下

    CWnd* pW=GetDlgItem(IDC_CHECK1);//得到已添加tip控件
    m_tt.UpdateTipText(L"asdflasdf",pW);//更新tip的内容

    其他控制函数具体可查MSDN的CToolTipCtrl类。

    对于静态文本框,要把Notify的属性设为TRUE;而如果静态文本控件是动态创建的,必须给窗口风格添加SS_NOTIFY,如

    m_StaticText.Create(_T("my static"), WS_CHILD|WS_VISIBLE|WS_BORDER|SS_NOTIFY, 
            CRect(10,10,150,50),this);

    参考文章:

    1. MFC中给控件添加Tooltip的方法

    2.了凡春秋MFC中添加ToolTip提示框

    MFC中给静态文本加上提示的做法http://www.cnblogs.com/clever101/archive/2010/05/01/1725578.html

    另外,如果想得到功能更强大的tip提示框,可以使用一个白俄罗斯人写的定制的tooltiphttp://www.codeproject.com/KB/miscctrl/pptooltip.aspx

  • 相关阅读:
    委托(delegate)的三种调用方式:同步调用,异步调用,异步回调(转载)
    C#异步:实现一个最简单的异步
    关于Thread.IsBackground属性的理解(转载)
    C# 中的多线程(转载)
    个人对AutoResetEvent和ManualResetEvent的理解(转载)
    C#线程系列讲座(4):同步与死锁
    Nginx location 配置踩坑过程分享
    微信扫码登录网页实现原理
    负载均衡SLB
    Tomcat学习
  • 原文地址:https://www.cnblogs.com/arxive/p/4907881.html
Copyright © 2020-2023  润新知