给MFC对话框按钮控件添加提示

前言

本文利用MFC提供的CToolTipCtrl类,给对话框控件提供工具提示。

一、具体思路

创建和操作一个CToolTipCtrl 的具体思路为:

  1. 构造CToolTipCtrl 对象 .
  2. 调用Create方法创建一个Windows工具提示控件并将其附加给CToolTipCtrl 对象。
  3. 调用AddTool方法给一个器具(A “tool” is either a window, such as a child window or control, or an application-defined rectangular area within a window’s client area. 器具是指窗口、子控件、客户区中定义的矩形区域等)注册一个工具提示控件,这样当鼠标悬停于器具时,工具提示控件存储的信息将被显示出来。
  4. 激活这个CToolTipCtrl控件。
  5. 除此以外,还可以对CToolTipCtrl 的各项参数进行具体设置,详见下面示例。

二、代码示例

创建一个基于对话框的MFC程序,在对话框中添加两个按钮控件。修改其ID值分别为IDC_BTN_TIPS、IDC_BTN_TIPS2。

1.在头文件中添加CToolTipCtrl对象:

private:
	CToolTipCtrl m_wndTipContrl;

2.在OnInitDialog添加以下代码:

BOOL CAddTipsDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	m_wndTipContrl.Create(this);
	m_wndTipContrl.AddTool(GetDlgItem(IDC_BTN_TIPS), _T("提示信息1:试验"));
	m_wndTipContrl.AddTool(GetDlgItem(IDC_BTN_TIPS2), _T("提示信息2:试验"));

	m_wndTipContrl.SetDelayTime(200);	//鼠标放上去多少ms开始显示提示
	m_wndTipContrl.SetTipTextColor(RGB(0, 0, 0));//设置提示字体颜色
	m_wndTipContrl.SetTipBkColor(RGB(255, 255, 255));//设置提示背景颜色
	m_wndTipContrl.SetDelayTime(TTDT_AUTOPOP,6000);	//add on 20221101,设置tip显示时间
	m_wndTipContrl.Activate(TRUE);    //一定要激活

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

3.重载对话框的PreTranslateMessage函数,根据MSDN中的叙述,为了使工具提示控件得到重要消息(例如WM_LBUTTONXXX)的通知,程序必须将消息转发给工具提示控件。转发消息最好的方式是在PreTranslateMessage函数中调用CToolTipCtrl::RelayEvent。
(In order for the tool tip control to be notified of important messages, such as WM_LBUTTONXXX messages, you must relay the messages to your tool tip control. The best method for this relay is to make a call to CToolTipCtrl::RelayEvent, in the PreTranslateMessage function of the owner window. )
PreTranslateMessage函数的实现如下:

BOOL CAddTipsDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类
	if (pMsg->message == WM_LBUTTONDOWN ||
		pMsg->message == WM_LBUTTONUP ||
		pMsg->message == WM_MOUSEMOVE)
	{
		m_wndTipContrl.RelayEvent(pMsg);
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}

三、效果

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Santiago

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值