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

  

  

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

时间: 2024-10-09 04:42:08

CGridCtrl某一列增加ToolTip飘窗效果的相关文章

为列增加默认值限制(Adding a default constraint)

我们可以为表中的某一列增加一个默认值,如上文中我们创建了tblPerson表,该表有GenderId列.我们可以使用下面的代码为该列增加默认值: Alter Table tblPerson Add Constraint DF_tblPerson_GenderId Default 3 For GenderId 同时我们也可以在为表增加新列的时候指定默认值,下面的代码为tblPerson增加一个地址列Address,同时为该地址指定了默认值"CHONGQING": Alter Table

C# WinForm DataGridView 给标题列增加序号及格式化某个字段

DataGridView 给标题列增加序号 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { DataGridViewTextBoxColumn dgv_Text = new DataGridViewTextBoxColumn(); for (int i = 0; i < dataGridView1.Rows.Count; i++) { i

ORACLE中给表、列增加注释以及读取注释

在ORACLE中给表.列增加注释以及读取注释 1.给表填加注释:SQL>comment on table 表名 is '表注释"; 2.给列加注释:SQL>comment on column 表.列 is '列注释'; 3.读取表注释:SQL>select * from user_tab_comments where comments is not null; 4.读取列注释:SQL>select * from user_col_commnents where comme

给按钮增加点击效果

一般我们如果要给按钮增加一个点击效果 ,最常见的方式是通过设置背景图片 即调用 - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state 然后按钮就会根据state的状态去设置按钮的背景 现在提供一个新的方式 ,可以解决不用设置图片 ,也不需要引用第三方的开源代码就可以完成 已编写成分类(Category),具体代码 // // UIButton+PKAdditions.h// // Created by

css3---transform&amp;transition之toolTip动画效果的实现

知识点总结: 1.元素设置了绝对定位后会自动变为块级元素: 2.父元素设置为相对定位,子元素设为绝对定位,然后对子元素作如下设置会得到不同的效果: a.bottom:100%----------------->子元素的底端和父元素的顶端对齐重合(如下图所示:黑色框为父元素~白色圆为子元素~) html代码: <div id="father"> <div id="child"> </div> </div> css代

纯代码给你的网站增加图片灯箱效果,增强落地页体验

灯箱效果是我一直想加又没有加的功能,正好最近百度在推移动落地页检测,顺手做一下优化 我的检测结果是:您的页面可能存在图片不可全屏查看,全屏查看后不可缩放 / 左右滑动的问题,影响落地页体验 我们可以直接使用 FancyBox 来完成我们的需求,FancyBox 是一款优秀的弹出框 Jquery 插件 1.允许我们用鼠标和键盘上的四个方向键切换图片2.可以根据当前窗口大小自动调整弹出框的大小,当我们改变浏览器窗口大小时,将会看到弹出框自动缩放3.支持缩略图列表.放大.全屏等功能4.弹出框支持显示多

为BlueLake主题增加图片放大效果

fancyBox 是一个流行的媒体展示增强组件,可以方便为网站添加图片放大.相册浏览.视频弹出层播放等效果.优点有使用简单,支持高度自定义,兼顾触屏.响应式移动端特性,总之使用体验相当好. 现在,我们就将 fancyBox 集成到 hexo BlueLake 中. 一.下载 fancybox git clone https://github.com/fancyapps/fancybox.git 文件下载下来之后,如下图所示: 将 dist 目录下的两个 js 文件拷贝到 BlueLake 主题的

0411_hxtx_保险列表增加tooltip

怎么说也是一个很细节的功能,显示效果如下图: 百度关键词换了一大堆,一开始老是百度jggride 表格 ,jquery,鼠标悬停,title,setGridgram()方法参数之类的,后来去google,可能是google 的搜索智能些,知道我输入的gdgrid,其实是jdgride... 总之,最后的关键词其实是,Jqgrid 鼠标旋停显示框实现===>解决网址参见:http://www.voidcn.com/blog/chuan9966/article/p-1437497.html 我在它的

增加动画的效果

a) alpha(AlphaAnimation) 渐变透明 b) scale(ScaleAnimation) 渐变尺寸伸缩 c) translate(TranslateAnimation) 画面转换.位置移动 d) rotate(RotateAnimation) 画面转移,旋转动画 1 public void onClick(View v) { 2 if(grid_list) { 3 lv.setVisibility(View.VISIBLE); 4 gv.setVisibility(View.