_TrackMouseEvent的用法

[Win32SDK基本]WM_MOUSELEAVE消息和TrackMouseEvent WM_MOUSELEAVE这个消息很有意思,它是鼠标指针离开窗口时发送的,但是它每一次发送都必须用TrackMouseEvent注册一次。 如果想自绘制窗口控件(比如按钮),使用WM_MOUSELEAVE消息判断鼠标移出重画,可以很简单地实现按钮的鼠标在上面变色移出时恢复。(据说这种方法有一些问题,就是如果鼠标按住窗口再离开的话WM_MOUSELEAVE就会在鼠标放开的时候再响应,另外S 阅读详情

BOOL _TrackMouseEvent( LPTRACKMOUSEEVENT lpEventTrack)

当鼠标离开窗口或停留在窗口指定的时间后分别发送: WM_MOUSELEAVE,WM_MOUSEHOVER.

LPTRACKMOUSEEVENT 是 TRACKMOUSEEVENT 结构体的指针,如下:

typedef struct tagTRACKMOUSEEVENT {

    DWORD cbSize;                  // 结构体的大小 ) 的作用:

    DWORD dwFlags;                 // 标示: TME_LEAVE,TME_HOVER

    HWND hwndTrack;               // 跟踪鼠标的窗口的句柄

    DWORD dwHoverTime;          // 发送 WM_MOUSEHOVER 的时间

} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;

 

当发送完消息后, _TrackMouseEvent 的作用就失效了,需再次调用 _TrackMouseEvent.

 

对于一个窗口,我们可以在 CWnd ::PreTranslateMessage(MSG* pMsg) 中拦截上述两个消息

也可以手动用宏 ON_MESSAGE 增加消息出来函数,如:

      ON_MESSAGE(WM_MOUSELEAVE,   OnMouseLeave)  

     ON_MESSAGE(WM_MOUSEHOVER,   OnMouseHover)  

 

 

对于鼠标还有一个情况:在窗口中按下左键并不松开,然后移动鼠标到本窗口外,则再发生鼠标消息此窗口是无法接收到的。若想接收,则需捕获鼠标。我们可以这样:

void CMyWindow::OnLButtonDown(UINT nFlags,CPoint point)

{

     SetCapture();

}

 

void CMyWindow::OnLButtonUp(UINT nFlags,CPoint point)

{

  if (GetCapture()==this)

  {

      ReleaseCapture();

  }

}

 

TrackMouseEvent 跟踪在指定的时间范围内,鼠标指针何时离开窗口或鼠标悬停在窗口上。 由程序主动激活 触发WM_MOUSEHOVER WM_MOUSELEAVE 消息,这个函数常用于创建动态界面元素、弹出菜单、工具提示等。 阅读详情

相关推荐

[ATL/WTL]_[初级]_[窗口如何实现WM_MOUSELEAVE和WM_MOUSEHOVER]

http://blog.youkuaiyun.com/infoworld/article/details/49718879 WTL响应WM_MOUSELEAVE和WM_MOUSEHOVER

Windows API 每日一练之 TrackMouseEvent

TrackMouseEvent 函数用于当鼠标指针离开某个窗口或在某个窗口中悬停指定时间后向相应窗口发送(post)消息。 语法 BOOL TrackMouseEvent( LPTRACKMOUSEEVENT lpEventTrack); 此函数可以 post 以下四个消息: 1. WM_MOUSEHOVER   鼠标指针在上次调用 TrackMouseEvent 函...

weixin_30572613的博客 953

TrackMouseEvent例子

TrackMouseEvent

TrackMouseEvent处理鼠标消息

当鼠标在按钮上,按钮可以响应鼠标移动,点击,进入,离开消息。有一个特殊情况,就是按钮处理窗口边缘时,鼠标离开按钮,进入系统其他界面,而不是按钮所在窗口时,就不能响应离开CM_MOUSELEAVE消息。 //.h文件 bool m_bTrackingMouse; //检测鼠标是否离开标志 protected: BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, MouseLeave) VCL_MESSAG

chinayu2007的专栏 629

汽车OBD接口实战:如何用STM32读取CAN总线数据(附完整代码)

本文详细介绍了如何利用STM32微控制器通过汽车OBD接口读取CAN总线数据的完整实战方案。内容涵盖硬件连接(如OBD引脚定义与TJA1050收发器接线)、STM32的CAN外设初始化与滤波器配置,并深入解析OBD-II诊断协议,演示了如何请求和解析发动机转速、车速等关键数据。文末提供了构建稳定数据读取系统的代码框架与错误处理建议,为嵌入式开发者和汽车电子爱好者提供了从零到一的实践指南。

9q8w7e6r5的博客 302

python提取图片中的文字写入excel文件,并打包为exe可执行文件

python提取图片中的文字写入excel文件,并打包为exe可执行文件

liqiang12689的博客 989

关于TrackMouseEvent用法总结

对于这个函数我也是最近想研究控件自绘才知道它真正怎么用.以前只是见到过.嗯,废话不多说. 我先说下我的问题:如何响应鼠标离开某个窗体(控件)事件? 先大概讲下步骤,然后再集中对TrackMouseEvent进行详解: 为按钮添加以下几个函数: ● OnMuseMove

sunliangyuan的专栏 1万+

Apache Paimon-实时数据湖

Flink社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。Flink 社区内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向 Streaming 以及 Realtime的数据湖存储项目。

m0_57307642的博客 2193

TrackMouseEvent用法

如何响应鼠标离开某个窗体(控件)事件?

zhousunmuhua的专栏 1006

Mac用户看过来!M1/M2芯片安装CiteSpace完整指南(从Homebrew到成功运行)

本文为Mac M1/M2芯片用户提供CiteSpace安装的完整指南,从Homebrew安装适配的Java环境到最终成功运行CiteSpace。详细步骤包括环境检查、Java配置、CiteSpace下载与优化,解决常见问题如内存分配、图形渲染和中文显示乱码,确保科研人员能顺利使用这一文献可视化工具。

weixin_42530458的博客 308

一文入门车载以太网:从原理到实战,看完就能上手开发

新手选型遵循“适配场景、兼顾成本、优先车规”的原则:普通场景(车载娱乐、普通诊断):100Base-T1 PHY(LAN8742)+ 非TSN交换机(SJA1105)+ STM32H743 ECU + 普通STP线缆;ADAS场景:1000Base-T1 PHY(TJA1101)+ TSN交换机(SJA1110)+ NXP S32G399 ECU + 高抗干扰STP线缆;避免过度选型:如普通娱乐场景无需选择TSN交换机、ASIL-B级芯片,否则会增加成本;

getusushu的博客 319

判断鼠标是否移到了窗口外

有两种方法了. 第一种就是用WM_TIMER,定时检查鼠标在什么地方.但效率比较低,不建议采用. 第二种就是用TrackMouseEvent.建议使用.具体用法参考MSDN TRACKMOUSEEVENT event ;  event.cbSize = sizeof( event );  event.dwFlags = TME_LEAVE ;  event.dwHoverTime = 0 ;  e

twater2000的专栏 1220

如何使用DPABI 进行核磁共振数据结果统计分析?

下面总结使用DPABI 的统计模块对MRI 图像进行统计分析的基本方法,并与SPM 的统计结果进行简单的对比。DPABI 的统计模块包含了常用的统计模型和多重比较校正方法、在控制协变量上也非常方便。 DPABI 进行结果统计分析一、下载和安装 DPABI二、下载样例数据三、统计模型和多重比较校正四、DPABI 的统计主界面五、DPABI 的可视化主界面六、查看统计结果 一、下载和安装 DPABI 下载 DPABI 包,解压后将文件夹和子文件夹加入MATLAB 的搜索路径即可。 具体安装方法详见 dpabi

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 1万+

TrackMouseEvent函数

TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); 参数lpEventTrack是一个指向TRACKMOUSEEVENT结构体的指针。函数执行成功的话返回非零值(true),否则返回零(false)。该函数可以发送的消息包

AmHuman的专栏 4785

基于STM32L4XX、HAL库的ESP32-C3-WROOM-02-N4 WIFI模块驱动程序设计

支持802.11 b/g/n Wi-Fi (2.4GHz)RISC-V 32位单核处理器,主频高达160MHz。封装尺寸:18mm × 20mm × 3mm。工作温度范围:-40°C ~ 85°C。// 设置WiFi模式为STA。支持Bluetooth 5 (LE)// 发送AT指令测试通信。// 检查响应是否包含OK。内置4MB SPI Flash。// 连接TCP服务器。// 发送HTTP请求。// 初始化UART。// 建立TCP连接。低功耗设计,适合IoT应用。

zhusl6688的博客 385

通过Python实现物联网金橙子自动打标

对于自家公司使用金橙子打标卡时,为了与生产线或者PLC联动等,往往需要对金橙子打标卡进行二次开发,而在二次开发中不得不涉及到MarkEzd.dll这个文件,而这个dll文件网上版本多不说,一般都没法直接使用,最后还不得不花大价钱购买专用库。而本文针对这个问题,涉法通过python来绕过MarkEzd.dll文件,直接进行自动化控制EzCad来实现联动,可应用于实际生产。文章最后拓展一下以物联网的形式,实现手机平台等登录网页,输入想要的印字内容后,远程打印的案例。

lylelo的博客 3366

TrackMouseEvent与_TrackMouseEvent

函数功能:当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。 函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);  参数:lpEventTrack;指向结构TRACKMOUSEEVENT的指针。   返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastE

tianshangyikexing的专栏 746

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TrackMouseEvent介绍

TrackMouseEvent函数TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);参数lpEventTrack是一个指向TRACKMOUSEEVENT结构体的指针。函数执行成功的话返回非零值(true),否则返回零(fa

babyyang1213的专栏 1381

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TrackMouseEvent函数实现鼠标停留响应

TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。 原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); 参数:   lpEventTrack:是一个指向TRACKMOUSEEVENT结构体的指针。 返回: 成功的话返回非零值(true),否则返回零(false)。 该

脑袋不好使 702

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave

为对话框添加WM_MOUSEHOVER或WM_MOUSELEAVE消息并不会响应。 MFC需要特殊处理,其中一法就是使用TRACKMOUSEEVENT void CmfcDlgDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //GetDlgItem(I...

diaomo9737的博客 337

_TrackMouseEvent

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

worldy的专栏 960
上一篇: 穷举法
下一篇: CThreadPool的使用
FlowShell
博客等级 码龄17年 119粉丝 50原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值