MFC中添加ToolTip提示框

 

为窗口或其中的控件添加提示框,可以使用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"This is a tip");//为此控件添加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类。

 

 如果你要进行更复杂的操作,需要添加消息映射和消息函数,

添加消息映射。在消息映射宏BEGIN_MESSAGE_MAP(CRDlg, CDialog)和END_MESSAGE_MAP()之间添加如下内容。

ON_NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText )

添加消息函数

BOOL SetTipText(UINT id, NMHDR * pTTTStruct, LRESULT * pRes) ;

 

对于静态文本框,要把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、CToolTipCtrl使用详细解说

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

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

posted @ 2019-01-16 14:47  余生以学  阅读(2084)  评论(0)    收藏  举报