MFC tip信息

//定义Tip信息对象,因为tip信息的情况很多,就直接用成员变量

CToolTipCtrl   m_ToolTipCtrl;

//定义一个tip信息显示控制的变量,因为addtool和delTool会一直发消息

int  m_iToolNum = 0;   // 要设初始值为0


//下面是Tip信息初始化代码

//允许tip信息的显示

EnableToolTips(TRUE);

//创建tip信息

m_ToolTipCtrl.Create(this, TTS_ALWAYSTIP);

//设置tip信息出来的时间和结束的时间

m_ToolTipCtrl.SetDelayTime(TTDT_INITIAL, 100);

m_ToolTipCtrl.SetDelayTime(TTDT_AUTOPOP, 100);


//下面的代码放到鼠标移动消息处理下面,其他地方自己把握

//在需要显示tip信息的区域下,添加

if (NULL != m_ToolTipCtrl.GetSafeHwnd())

{

     if (0 == m_iToolNum )

     {

           m_iToolNum = 1;

           m_ToolTipCtrl.Active(TRUE);

           m_ToolTipCtrl.DelTool(this, 1);

           //这两个的ID要保持一致,不然会出现注册的ID越来越多,

           m_ToolTipCtrl.AddTool(this, 文本信息,  显示tip信息的区域, 1);

     }

     else

     {

            m_iToolNum ++;

            m_ToolTipCtrl.Active(TRUE);

     }

     if (m_iToolNum  > 5)

     {

             m_iToolNum   = 0;

             m_ToolTipCtrl.Active(TRUE);

      }

}


//在其它不需要显示tip信息的区域下

m_ToolTipCtrl.Active(FALSE );



//在PreTranslateMessage或DefWindowProc (个人建议用后面的)函数下

if (NULL != m_ToolTipCtrl.GetSafeHwnd())

{

     if (m_iToolNum  > 0)

     {

            //参数为消息变量

            m_ToolTipCtrl.RelayEvent(&MSG);

     }

}


总结:利用AddTool 和DelTool使tip信息的注册值保持在一个,这样,不会因为滚动条位置的变化,鼠标位置不变也会出现tip信息的错误;

AddTool 和DelTool会一直抛消息,导致的结果会一直闪, 因此利用了m_iToolNum  这样的一个计数器,截断消息的一直触发。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值