zoukankan      html  css  js  c++  java
  • CGridCtrl某一列增加ToolTip飘窗效果

    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);
    }
    

      

      

  • 相关阅读:
    密码学
    MD5
    计算机基础之操作系统
    python中列表之间求差集、交集、并集
    Python语言中各种进制相互转换
    计算机基础
    bzoj2705 [SDOI2012]Longge的问题
    bzoj3160 万径人踪灭
    codeforces 528D Fuzzy Search
    杜教筛 && bzoj3944 Sum
  • 原文地址:https://www.cnblogs.com/alphaxz/p/11655735.html
Copyright © 2011-2022 走看看