鼠标移动在屏幕上显示温度Tip提示功能-CToolTipCtrl类的使用
初学VC++,太多知识不懂,需要不断的查找资料,想通过记录让自己有所积累,主要是怕以后会很快忘记。最近在做一个在屏幕上显示鼠标移动位置的温度值,我利用先缓存一帧图像的温度值,然后,通过鼠标移动消息相应函数记录坐标值,图像放大3倍,所以记录的坐标需要缩小3倍。
CToolTipCtrl m_ToolTip;
BOOL CVedioShowDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
mCVedioShowDlg = this;
memset(m_hist, 0, sizeof(m_hist));
// TODO: 在此添加额外的初始化
if (!m_ToolTip.Create(this)) //创建一个工具提示控件,并附加到CToolTipCtrl控件对象上
{
TRACE(_T("Untable To create ToolTip\n"));
return FALSE;
}
m_ToolTip.SetDelayTime(200);
m_ToolTip.SetTipTextColor(RGB(0,0,255));
m_ToolTip.SetTipBkColor(RGB(255,255,255));
m_ToolTip.SetMaxTipWidth(600);
m_ToolTip.Activate(TRUE); // Activate the tooltip control
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CVedioShowDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString st;
int x = point.x / multiBK; //multiBK=3,因图像放大3倍,此处缩小3倍
int y = point.y / multiBK; //multiBK=3,因图像放大3倍,此处缩小3倍
float f = fTempTable[yIndex * 3 + xIndex][y][x]; //该处因显示多个设备,缓存对应选择的设备索引
st.Format(_T("(%d,%d) %.2f"), x, y, f); //格式化需要输出的文本
m_ToolTip.AddTool(FromHandle(GetSafeHwnd()), st); //注册具有工具提示控件的提示框,输出文本在Tip提示框
m_ToolTip.UpdateTipText(st, FromHandle(GetSafeHwnd())); //更新输出Tip提示框文本
CDialogEx::OnMouseMove(nFlags, point);
}
BOOL CVedioShowDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (NULL != m_ToolTip) //将鼠标消息传送给工具提示控件进行处理
m_ToolTip.RelayEvent(pMsg);
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE ) //解决esc闪退
return TRUE;
return CDialogEx::PreTranslateMessage(pMsg);
}
网上有一篇文章对我有启发,特粘贴在此处备忘:
https://blog.csdn.net/lujincsdn/article/details/80309977
我现在所做的项目显示区分为4个小格,双击其中一个小格实现全屏,在全屏的状态下,鼠标移动,显示对应像素点的温度值。
实现过程中,纠结了好久,UpdateTipText就是不显示。
现在记录正确的实现方式:
在类的.h文件中声明一个CToolTipCtrl m_tooltip,然后在.cpp的OnInitDialog中添加如下代码:
//CToolTipCtrl::Create 创建工具提示控件,并将其附加到CToolTipCtrl对象
m_tooltip.Create(this);
//CToolTipCtrl::AddTool 使用工具提示控件注册一个工具
m_tooltip.AddTool(FromHandle(m_CameraDisplay.GetSafeHwnd()), TTS_ALWAYSTIP);//第一个参数必须为指向四个小格窗口的指针,和后面显示的时候UpdateTipText第二个参数对应
m_tooltip.AddTool(FromHandle(m_CameraDisplay1.GetSafeHwnd()), TTS_ALWAYSTIP);
m_tooltip.AddTool(FromHandle(m_CameraDisplay3.GetSafeHwnd()), TTS_ALWAYSTIP);
m_tooltip.AddTool(FromHandle(m_CameraDisplay4.GetSafeHwnd()), TTS_ALWAYSTIP);
//CToolTipCtrl::SetDelayTime 将弹出窗口的初始设置并重新显示工具提示控件的持续时间
m_tooltip.SetDelayTime(10);
AddTool之所以是4个,是对应4个小格的指针。
在cpp的PreTranslateMessage重载父类函数,添加如下代码
---------------------
作者:lujincsdn
来源:CSDN
原文:https://blog.csdn.net/lujincsdn/article/details/80309977
版权声明:本文为博主原创文章,转载请附上博文链接!
鼠标移动在屏幕上显示温度Tip提示功能-CToolTipCtrl类的使用的更多相关文章
- easyUI的doCellTip 就是鼠标放到单元格上有个提示的功能
1:这个东西是我抄的(抄的哪儿的我就想不起来了- -)弹出的窗没有样式 不是很好看 //扩展 $.extend($.fn.datagrid.methods, { /** * 开打提示功能 * @pa ...
- C#中,当鼠标移动到控件上,动态显示提示内容 ToolTip
[背景]写了个C#的小程序,其中在Settings窗体中有些配置参数,希望在鼠标移动到对应的配置选项上,动态显示相关的说明解释内容. [解决过程]1.原先就已经知道,有些控件,是带ToolTipTex ...
- delphi 在桌面屏幕上模拟鼠标单击
delphi 在桌面屏幕上模拟鼠标单击 procedure TFrmUnicom.Button1Click(Sender: TObject); var oldPoint, newPoint: TPoi ...
- 在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件)
;~ 在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件) ; https://www.autohotkey.com/boards/viewtopic.php?t ...
- [js开源组件开发]tip提示组件
tip提示组件 常见的应用场景中,总是难免会遇到提示信息,比如显示不完全时需要鼠标移上去显示title,比如验证时的错误提示,比如操作按钮的辅助说明等,所以我独立出来了一个小的js组件,tip提示组件 ...
- C# chart,有关如何在鼠标移动到Series上时显示节点及数据 (有待继续更新)
一.效果与思路 效果: 解决方案1 用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,让用户知道我是选的那一个X的值,同时用tooltip显示该 ...
- wxWidgets学习笔记——在屏幕上画简单的图形和文字
在屏幕上画简单图形和显示图片.处理简单鼠标键盘事件 /*************************************************************** * Name: M ...
- Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示?
Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示? 公司开发款APP,要给领导演示,总不能用手机面对面演示吧.所以找了好久,找到一款体验超好的: Total Control-帮助你 ...
- [Xcode 实际操作]一、博主领进门-(2)第一个工程项目:将导入的图片显示到屏幕上
目录:[Swift]Xcode实际操作 本文将演示创建第一个工程项目. 在项目导航区,鼠标右键[Assets.xcassets]资源文件夹. 隔壁右侧区域左下角点击[+],打开资源文件管理菜单-> ...
随机推荐
- Linux 下Shell的学习
1.Shell学习 1.什么是Shell shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...
- 编写VBA宏生成页面
概述 依据详细设计中表设计,借用excel宏编写VBA生成页面. 特色 高定制.高效率.兼容所有生成要求.不依赖低耦合.任意Sheet适用 缺陷 不支持批量Sheet页生成 VBA源码 Sub lis ...
- Linux 配置samba服务实现与Windows文件共享
目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍 Samba 最先在 ...
- 自动化测试全套流程(一)-搭建Jenkins环境
前提 既然要做自动化测试,那我们就做得彻底一些,将整套系统部署在Linux服务器上,在搭建Jenkins环境之前,我已经通过VirtualBox安装了一个CentOS的服务器,搭建Jenkins是基于 ...
- Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
System.Data.OracleClient 已经过时了.微软不再支持它. 因此,我建议你为. NET 使用Oracle数据提供程序:ODP.Net. 你可以从以下位置下载: 版本:Release ...
- svn使用教程及常见问题解决方案
使用教程转自:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本 ...
- sql根据子查询更新语句
update … from语句 测试环境准备 create table #table1 ( id ) ); go create table #table2 ( id ) ); go , , , , , ...
- 使用UEFI+GPT模式安装Windows
一.硬盘分区 分区还是用PE下最常用的DiskGenius,可直接使用"快速分区"功能对硬盘进行分区.分区表类型选择GUID,勾选建立ESP分区.ESP分区非常重要,用于存放系统引 ...
- Linux性能测试工具
Linux性能测试工具 在测试中,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来关注某些地方,如内存.CPU等.在Linux系统中,所有的运行参数保存在虚拟目录/proc中,换句话说, ...
- Spark SQL on Yarn-Cluster
Spark SQL 或者Hive SQL在yarn-client模式下运行正常,但是在yarn-cluster模式下总是报 status failed错误, 需要把$SPARK_HOME/lib/sp ...