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" );
。。。。。。。。
该功能的实现主要是用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" );
。。。。。。。。
相关文章推荐
- Android坐标系统常用方法属性总结
- Linux下C语言实现文件遍历,支持嵌套和文件数量统计
- 运营女的搭讪经历
- 关于this关键字的用法
- javaIOzongji
- unicode 一些疑问
- linux内核demo
- Codeforces Round #353 (Div. 2) A. Infinite Sequence
- 20160525 数据分析与SAS2 逻辑库
- serialVersionUID的作用
- 冲刺第六天
- Asp.net 访问数据库的几种方式
- 单例模式
- innodb io管理
- Windows Driver Samples源码剖析(一) 综述
- Material Design UI Widgets ——CoordinatorLayout (协调者布局)
- GC运行流程以及申请创建对象流程
- 新浪爱彩票DBA总监:为什么你的MySQL跑得很慢?
- IOS TextField设置大全
- 【Halcon】Halcon算子总集合