寒星轩

There are innumerable stars in the sky, the smallest is me!

用户操作
[即时聊天] [发私信] [加为好友]
李星ID:starlee
207854次访问,排名341好友65人,关注者107
欢迎大家访问我的Blog。
主要是C++,设计模式,面向对象设计方面的技术文章。
starlee的文章
原创 98 篇
翻译 0 篇
转载 45 篇
评论 331 篇
李星的公告
郑重声明

        本BLOG所发表的 原创文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者(StarLee)和出处(CSDN Blog)。
作者Email:
coolstarlee(at)sohu.com
最近评论
陈诚:好象不一样,我这个共两个类,实现类和接口类
深夜才走在路上:实际上使用CLR封送C++类让人很受伤,在mc中有很多C++的特性不能使用,甚至STL都不可用
hfg :错了错了,当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。

不管基类的析构函数是不是virtual ,派生类的析构函数还是会被调用的,区别只是在于基类的析构函数有没有被调用
Forrest Yu:Star Lee:

如果有两个以上的类需要包装,那又应该怎样做呢?
Forrest Yu:CLR 还是很强大的,
一些老的MFC项目可以先手动添加
#include <afx.h>,
其他的可能要加
#include <windows.h>,
然后再用这种方法.
文章分类
收藏
相册
友情链接
houdy的专栏
lijgame的专栏
lyrebing的专栏
禾青谷
存档
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 在VC中给Slider添加定制的Tooltips收藏

新一篇: VC中一些控件的小技巧 | 旧一篇: 在VC中用GDI+绘制角度可变的颜色渐变效果

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

发表于 @ 2005年12月21日 10:59:00|评论(loading...)|编辑

新一篇: VC中一些控件的小技巧 | 旧一篇: 在VC中用GDI+绘制角度可变的颜色渐变效果

评论

#Van 发表于2007-06-28 14:30:33  IP: 218.242.54.*
不需要声明CSliderCtrl m_slider;
只要保留OnToolTipNotify函数即可
发表评论  


登录
Csdn Blog version 3.1a
Copyright © 李星