CToolTipCtrl使用详解

CToolTipCtrl是用来显示单行文本的弹出框,可以给继承自CFrameWnd(提供了一个缺省的TTN_NEEDTEXT消息处理函数)的Windows控件添加一些提示信息。要使用它,包含3个步骤:

  • Enabling Tool Tips
  • Handling TTN_NEEDTEXT Notification for Tool Tips
  • The TOOLTIPTEXT Structure

也就是说,第一步需要先打开这个功能(Tool Tips)。第二步需要处理TTN_NEEDTEXT消息,并不是必须的。第三步是利用TOOLTIPTEXT结构体提供的信息,设置提示内容。打开工具提示消息功能,使用函数EnableToolTips。其原型是:

bEnable为TRUE时打开功能,为FALSE时关闭工具提示功能。

处理TTN_NEEDTEXT需要一个消息映射ON_NOTIFY_EX( TTN_NEEDTEXT, 0, memberFxn )。其中的的memberFxn 是消息处理函数。memberFxn 的原型为:

NMHDR是一个结构体,包含了对应控件的句柄、ID和消息代码。此参数可以由NMHDR为其一个成员的结构体替换使用,比如后面提到两种结构体NMTTDISPINFO、TOOLTIPTEXT。

消息处理函数的参数是NMHDR类型的指针,它实际上指向的是一个 NMTTDISPINFO结构体。

使用时常使用TOOLTIPTEXT结构体。

可以看出其基本结构是一致的。前者只是后者的一个替代而已。各个成员代码已经做了解释,不再解释。

我们看看MSDN提供的示例:

TOOLTIPTEXT的uFlags成员就是用来指示NMHDR的idForm的解释方式。如果指示它是一个窗口句柄,它就指示了鼠标当前停靠的控件,显示lpszText或者szText的提示信息。

成功了吗?还差一点,需要将鼠标产生的消息传递给Tool Tip。这就需要使用CToolTipCtrl提供的一个成员函数RelayEvent。

现在开始自己动手吧。

1、创建一个CToolTipCtrl成员。

2、添加消息映射。在消息映射宏BEGIN_MESSAGE_MAP(CRDlg, CDialog)和END_MESSAGE_MAP()之间添加如下内容。

3、声明消息处理函数

4、打开工具消息提示功能。调用CToolTipCtrl的BOOL Create( CWnd* pParentWnd, DWORD dwStyle = 0 )函数创建一个CToolTipCtrl。添加在OnInitDialog()函数中。

5、注册一个工具。如果只是给一个控件添加提示消息,可以直接将LPSTR_TEXTCALLBACK改为提示消息,不需要消息映射及消息处理函数,但只能给一个控件添加。

6、实现消息处理函数。

7、在PreTranslateMessage中传递消息。

OK。大功告成。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值