在VC中给Slider添加定制的Tooltip
介绍了如何在在VC中给Slider添加定制的Tooltips。
VC中的Slider的Tooltips只能显示表示当前位置的int型值,可是有时候,这种Tooltips并不够用。比如,在一个视频录制的小软件中,可能会需要类似“总共500帧,当前是第13帧”的Tooltips;或者有些时候想在Tooltips中显示float型的值。
在这些时候我们就只能用CToolTipCtrl配合TTN_NEEDTEXT消息来实现我们的定制Tooltips。
下面用一个小例子来具体说明:
首先,给Slider映射一个Control型变量,本例中为:CSliderCtrl m_slider; // ID为IDC_SLIDERTEST 然后,添加CToolTipCtrl变量和相应TTN_NEEDTEXT的消息函数:CToolTipCtrl m_tooltips;BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult);
在cpp文件的消息映射中加入以下代码:ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify) 在初始化函数中,添加以下代码:m_slider.SetRange(0, 500, TRUE);
m_slider.SetPos(0);// 创建Tooltips
m_tooltips.Create(GetDlgItem(IDC_SLIDERTEST));
m_tooltips.Activate(TRUE); 在OnHScroll函数中添加:if (pScrollBar == (CScrollBar*)GetDlgItem(IDC_SLIDERTEST))
m_tooltips.Update(); // 更新Tooltips,会触发TTN_NEEDTEXT消息 下面是实现定制Tooltips的函数,也就是相应TTN_NEEDTEXT的消息函数:BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult)
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT nID =pNMHDR->idFrom;
if (pTTT->uFlags & TTF_IDISHWND)
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
if(nID)
{
// 这里就是你要显示的Tooltips,可以根据需要来定制
CString strToolTips;
strToolTips.Format("总共500帧,当前是第%d帧", m_slider.GetPos());
字串3
strcpy(pTTT->lpszText, strToolTips);
pTTT->hinst = NULL;
return(TRUE);
}
} return(FALSE);
}这种方法不仅仅可以实现Slider的定制Tooltips,其他控件也可以用这个方法来实现。
VC中的Slider的Tooltips只能显示表示当前位置的int型值,可是有时候,这种Tooltips并不够用。比如,在一个视频录制的小软件中,可能会需要类似“总共500帧,当前是第13帧”的Tooltips;或者有些时候想在Tooltips中显示float型的值。
在这些时候我们就只能用CToolTipCtrl配合TTN_NEEDTEXT消息来实现我们的定制Tooltips。
下面用一个小例子来具体说明:
首先,给Slider映射一个Control型变量,本例中为:CSliderCtrl m_slider; // ID为IDC_SLIDERTEST 然后,添加CToolTipCtrl变量和相应TTN_NEEDTEXT的消息函数:CToolTipCtrl m_tooltips;BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult);
在cpp文件的消息映射中加入以下代码:ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify) 在初始化函数中,添加以下代码:m_slider.SetRange(0, 500, TRUE);
m_slider.SetPos(0);// 创建Tooltips
m_tooltips.Create(GetDlgItem(IDC_SLIDERTEST));
字串1
m_tooltips.Activate(TRUE); 在OnHScroll函数中添加:if (pScrollBar == (CScrollBar*)GetDlgItem(IDC_SLIDERTEST))
m_tooltips.Update(); // 更新Tooltips,会触发TTN_NEEDTEXT消息 下面是实现定制Tooltips的函数,也就是相应TTN_NEEDTEXT的消息函数:BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult)
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT nID =pNMHDR->idFrom;
if (pTTT->uFlags & TTF_IDISHWND)
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
if(nID)
{
// 这里就是你要显示的Tooltips,可以根据需要来定制
CString strToolTips;
strToolTips.Format("总共500帧,当前是第%d帧", m_slider.GetPos());
字串3
strcpy(pTTT->lpszText, strToolTips);
pTTT->hinst = NULL;
return(TRUE);
}
} return(FALSE);
}这种方法不仅仅可以实现Slider的定制Tooltips,其他控件也可以用这个方法来实现。
Tags:
责任编辑:
上一篇:C语言基础(1) 下一篇:新手入门:Spring的一些学习方法及意见
您的评论
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
精彩推荐
最新资讯


您的位置: