为窗口或其中的控件添加提示框,可以使用MFC的类CToolTipCtrl,使用方法如下(使用Microsoft Visual Studio 2010编程环境)
新建一个基于对话框的ToolTip项目
1.在窗口的类定义中添加如下代码:
class CToolTipDlg : public CDialogEx
{
…
public:
CToolTipCtrl m_tooltip;
…
}
2.通过项目-类向导添加成员变量添加Button控件成员m_tooltip和Edit控件成员m_edit。
3.在对话框的OnInitDialog()初始化函数中添加如下代码
m_tooltip.Create(this);
//设置延时显示提示信息的时间
m_tooltip.SetDelayTime(200);
//设置提示消息的背景颜色为紫红色
m_tooltip.SetTipBkColor(RGB(255,0,255));
//设置控件提示信息
m_tooltip.AddTool(&m_button,_T("这是一个button按钮"));
m_tooltip.AddTool(&m_edit,_T("这是一个编辑框"));
4.重载父窗口的 BOOL PreTranslateMessage(MSG* pMsg) 函数,添加如下代码。
BOOL CToolTipDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(m_tooltip.m_hWnd!=NULL)
m_tooltip.RelayEvent(pMsg);
return CDialogEx::PreTranslateMessage(pMsg);
}
到这里为控件添加ToolTip消息提示框就完成了。
如果想修改已添加的tip的内容,可以使用UpdateTipText函数,添加如下代码
CWnd* pW=GetDlgItem(IDC_CHECK1);//得到已添加tip控件
m_tooltip.UpdateTipText(L"asdflasdf",pW);//更新tip的内容
对于静态文本框,要把Notify的属性设为TRUE;而如果静态文本控件是动态创建的,必须给窗口风格添加SS_NOTIFY,如
m_StaticText.Create(_T("mystatic"),WS_CHILD|WS_VISIBLE|WS_BORDER|SS_NOTIFY, CRect(10,10,150,50),this);