初学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类的使用的更多相关文章

  1. easyUI的doCellTip 就是鼠标放到单元格上有个提示的功能

    1:这个东西是我抄的(抄的哪儿的我就想不起来了- -)弹出的窗没有样式  不是很好看 //扩展 $.extend($.fn.datagrid.methods, { /** * 开打提示功能 * @pa ...

  2. C#中,当鼠标移动到控件上,动态显示提示内容 ToolTip

    [背景]写了个C#的小程序,其中在Settings窗体中有些配置参数,希望在鼠标移动到对应的配置选项上,动态显示相关的说明解释内容. [解决过程]1.原先就已经知道,有些控件,是带ToolTipTex ...

  3. delphi 在桌面屏幕上模拟鼠标单击

    delphi 在桌面屏幕上模拟鼠标单击 procedure TFrmUnicom.Button1Click(Sender: TObject); var oldPoint, newPoint: TPoi ...

  4. 在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件)

    ;~  在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件) ; https://www.autohotkey.com/boards/viewtopic.php?t ...

  5. [js开源组件开发]tip提示组件

    tip提示组件 常见的应用场景中,总是难免会遇到提示信息,比如显示不完全时需要鼠标移上去显示title,比如验证时的错误提示,比如操作按钮的辅助说明等,所以我独立出来了一个小的js组件,tip提示组件 ...

  6. C# chart,有关如何在鼠标移动到Series上时显示节点及数据 (有待继续更新)

    一.效果与思路 效果: 解决方案1 用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,让用户知道我是选的那一个X的值,同时用tooltip显示该 ...

  7. wxWidgets学习笔记——在屏幕上画简单的图形和文字

    在屏幕上画简单图形和显示图片.处理简单鼠标键盘事件 /*************************************************************** * Name: M ...

  8. Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示?

    Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示? 公司开发款APP,要给领导演示,总不能用手机面对面演示吧.所以找了好久,找到一款体验超好的: Total Control-帮助你 ...

  9. [Xcode 实际操作]一、博主领进门-(2)第一个工程项目:将导入的图片显示到屏幕上

    目录:[Swift]Xcode实际操作 本文将演示创建第一个工程项目. 在项目导航区,鼠标右键[Assets.xcassets]资源文件夹. 隔壁右侧区域左下角点击[+],打开资源文件管理菜单-> ...

随机推荐

  1. 《C++ Primer Plus》读书笔记之四—分支语句和逻辑操作符

    第六章 分支语句和逻辑操作符 1.&&的优先级低于关系操作符. 2.取值范围:取值范围的每一部分都使用AND操作符将两个完整的关系表达式组合起来: if(age>17&& ...

  2. MongoDB命令及其MongoTemplate的混合讲解

    前言 前面讲解了如何在springboot中集成mongodb,本文将讲解mongodb命令操作及其MongoTemplate的使用.穿插的目的在于不用先去寻找mongodb的命令又去寻找在java中 ...

  3. 深入浅出SharePoint——获取Choice Field的Mapping value

    list field对应的caml定义如下 <Field Type="Choice" DisplayName="Inspection Result" Re ...

  4. css3优惠券

    <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...

  5. Mac下的mongodb安装

    mac下的mongodb安装主要有两种方式,一是手工安装,需在官网下载源文件,二是通过homebrew,至于homebrew不做介绍.既然是Mac系统下,我认为直接通过homebrew安装最好,省事还 ...

  6. struct class 内存结构初探-内存模型顺序和变量的实际添加顺序一致

    typedef struct structTest { char xchar; int xint; int yint; }xStruct; @interface ViewController () { ...

  7. win10中显示资源管理器扩展

    一年前从有两台机器win7升级到win10,一台上装了我常用的资源管理器扩展setExBar,但另一台没有.升级后原来有插件的依然默认显示插件,我在另一台机器上安装了setExBar时默认不显示.如果 ...

  8. POJ 1743 Musical Theme 【后缀数组 最长不重叠子串】

    题目冲鸭:http://poj.org/problem?id=1743 Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Su ...

  9. EF中連表查詢的應用方式

    1.首先我們想讓列表頁顯示兩個表的共同數據 這裡有兩張表 public class mytype    {        public int mytypeID { get; set; }       ...

  10. LayIM.AspNetCore Middleware 开发日记(五)Init接口实现细节

    前言 “一旦开始了就要坚持下去“.为什么本文的第一句话是这么一句话呢,因为我经常就是开头轰轰烈烈,结果越来越枯燥,就不想做下去了.但是版图就放弃又那么不甘心,继续加油吧. 吐槽完毕,进入正题.在上一篇 ...