在VC中给Slider添加定制的Tooltips

2016-02-19 16:20 1 1 收藏

下面是个简单易学的在VC中给Slider添加定制的Tooltips教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

  VC中的Slider的Tooltips只能显示表示当前位置的int型值,可是有时候,这种Tooltips并不够用。比如,在一个视频录制的小软件中,可能会需要类似“总共500帧,当前是第13帧”的Tooltips;或者有些时候想在Tooltips中显示float型的值。

  在这些时候我们就只能用CToolTipCtrl配合TTN_NEEDTEXT消息来实现我们的定制Tooltips。

  下面用一个小例子来具体说明:

        首先,给Slider映射一个Control型变量,本例中为:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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函数中添加:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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,其他控件也可以用这个方法来实现。

来源:https://www.tulaoshi.com/n/20160219/1611751.html

延伸阅读
标签: 电脑入门
在Word的格式菜单项中,有个叫样式与格式的菜单项,样式选项,可以让我们在不同文章中设定相同的格式,使不同时候所编辑的文件 具有相同的风格。在此,我们先明确一下什么是样式。样式其实就是对文本某部分的格式的定义。在格式菜单中的样式项里,我们可以发现WORD其实已 提供了多种样式,如 标题1、标题2、正文等。而且我们也可以在设定满足...
标签: Web开发
SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中。 SCRIPT 标记 VBScript 代码写在成对的 SCRIPT 标记之间。例如,以下代码为一个测试传递日期的过程: SCRIPT LANGUAGE="VBScript" !-- Function CanDeliver(Dt) CanDeliver = (CDate(Dt) - Now()) 2 End Function -- /SCRIPT 代码的开始和结束部分都有 SCRIPT 标记。LA...
标签: 办公软件
如果需要在如图的Excel数据区域每一行的上部添加一空行,如何快速实现呢? 对于这种添加的行数不多的情况,可按住Ctrl键依次单击行按钮,然后单击右键,选择快捷菜单中的“插入”命令,这样就会在每一个选中行的上面添加一空行。 如果要添加的行数比较多(成百上千行),上述方法就比较麻烦了,可以通过添加辅助列并利用Excel的定位功...
一、前 言 对于工具栏,我想大家一定不陌生,它直观,使用方便,它给应用程序的用户带来极大的方便.对VC++程序员来说,为自己开发的软件加上一个工具栏并不难,几乎每本介绍VC++的书都少不了介绍这方面的内容,并且,如果在开发初期就想加入工具栏的话,就更简单了,MFC 可自动为您生成工具栏.可是我们所说的这些工具栏都有一个共同...
标签: 电脑入门
在Word文档中设置分栏后,尽管一页中有两栏或者多栏文字,但使用插入页码命令,却只能在该页中插入同一个页码。但是我们在日常运用中,会遇到一些特殊情况,诸如,需要在文档的每栏都添加页码,或者需要自定义的开始添加页码的页面。这些又该如何实现呢? 多栏设置页码 以下方法是针对一页分为两栏,也就说,一页中有两部分的内容,分别为它们...

经验教程

299

收藏

22
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部