您的位置:首页 > 其它

MFC/VC 鼠标悬停在控件上方显示信息

2016-05-25 17:32 330 查看
今天在写程序时遇到鼠标悬停在控件上方显示信息,经查阅资料及实践总结如下:
该功能的实现主要是用CToolTipCtrl类。

首先在对话框的头文件中加入初始化语句:public:下,加入:CToolTipCtrl    m_Mytip;

然后在初始化对话框函数中加入:

m_Mytip.Create(this);  

m_Mytip.AddTool( GetDlgItem(IDC_BUTTON), "你想要添加的提示信息" ); //IDC_BUTTON为你要添加提示信息的按钮的ID

m_Mytip.SetDelayTime(200); //设置延迟

//m_Mytip.SetTipTextColor( RGB(0,0,255) ); //设置提示文本的颜色

//m_Mytip.SetTipBkColor( RGB(255,255,255)); //设置提示框的背景颜色

m_Mytip.Activate(TRUE); //设置是否启用提示

在实际操作中,重新定义了一个函数OnToolTip()来处理,非类里面的函数,在该函数中需获取当前主窗口的句柄,并且需要把m_Mytip.Create(this);

里的this换成主窗口句柄。如下:

C***Dlg* dlg = (C***Dlg*)AfxGetApp()->GetMainWnd();
dlg->m_MyTip.Create(dlg);
dlg->m_MyTip.AddTool(dlg->GetDlgItem(IDC_BUTTON_), "**" );
dlg->m_MyTip.Activate(TRUE);

然后在类向导中添加PreTranslateMessage消息响应函数

BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)

{

// TODO: Add your specialized code here and/or call the base class

  if(pMsg->message==WM_MOUSEMOVE)

  m_Mytip.RelayEvent(pMsg);

return CDialog::PreTranslateMessage(pMsg);

}

注:如果要为多个按钮添加功能提示只需在

m_Mytip.AddTool( GetDlgItem(IDC_BUTTON), "你想要添加的提示信息" );

的下面再加上类似语句,如

m_Mytip.AddTool( GetDlgItem(IDC_BUTTON1), "你想要添加的提示信息1" );

m_Mytip.AddTool( GetDlgItem(IDC_BUTTON2), "你想要添加的提示信息2" );

。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: