科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在VC中给Slider添加定制的Tooltips

在VC中给Slider添加定制的Tooltips

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

介绍了如何在在VC中给Slider添加定制的Tooltips。

作者:StarLee 来源:CSDN 2008年3月21日

关键字: 添加 Slider C++ C Linux

  • 评论
  • 分享微博
  • 分享邮件
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(0500, 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());
   
               strcpy(pTTT
->lpszText, strToolTips);
               pTTT
->hinst = NULL;
               
return(TRUE);
           }
    }

    
return(FALSE);
}

    这种方法不仅仅可以实现Slider的定制Tooltips,其他控件也可以用这个方法来实现。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章