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);
具体可参考下面的链接。
参考:
3、MFC中给静态文本加上提示的做法http://www.cnblogs.com/clever101/archive/2010/05/01/1725578.html
4、另外,如果想得到功能更强大的tip提示框,可以使用一个白俄罗斯人写的定制的tooltiphttp://www.codeproject.com/KB/miscctrl/pptooltip.aspx

浙公网安备 33010602011771号