码迷,mamicode.com
首页 > 其他好文 > 详细

CGridCtrl某一列增加ToolTip飘窗效果

时间:2019-10-11 17:58:07      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:tcl   鼠标   ==   绑定   div   网上   move   hit   cli   

CGridCtrl是MFC时代一个强大的表格控件类,我们在使用中如果某一列里的内容过多,无法显示完全的时候,需要鼠标指向这个列可以Tooltip飘窗显示的时候,可以用到下面这个方法。

使用的类是 CToolTipCtrl  ,使用CToolTipCtrl的时候会调用AddToolTip这个方法,但是这个方法是需要传递一个控件的指针,而CGridCtrl的表格只有一个控件指针,每个单元格不是控件,所以也没有窗口指针。所以正常的AddToolTip方法绑定调用是没有作用的。

看到好多网上的资料都是在ontooltiphit中增加处理方法,但是有个问题,这个函数是Const函数,开发的时候发现CGridCtrl中的函数无法在这个函数中使用,无奈只好退而求其次,使用了mousewheel消息来处理的。下面说一下具体方法和思路:

1.CToolTipCtrl 声明为CGridCtrl的成员变量,AddToolTip绑定GridCtrl的指针。

2.设置需要Tooltip飘窗提示的具体列。

3.在mousewheel中捕获的事件中判断当前鼠标是否在我们需要Tooltip提示的列上,是的话激活tooltip显示。不是不显示。在这里过滤的目的主要是为了在具体列上能显示飘窗。

参考代码如下:

void CGridCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
  CRect rect;
  GetClientRect(rect);
  CCellID cellIDTip=GetCellFromPt(point);//这里根据鼠标指针获取到单元格
  if (m_iToolTipColumn>0 && cellIDTip.col==m_iToolTipColumn)//判断单元格是否设置了飘窗效果,并且当前列是飘窗列
  {
    CString str=GetItemText(cellIDTip.row,cellIDTip.col);
    m_ToolTip.UpdateTipText(str,this);
    m_ToolTip.Activate(TRUE);
  }else
    m_ToolTip.Activate(FALSE);
}

  

  

 

CGridCtrl某一列增加ToolTip飘窗效果

标签:tcl   鼠标   ==   绑定   div   网上   move   hit   cli   

原文地址:https://www.cnblogs.com/alphaxz/p/11655735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!