如何处理窗口的鼠标离开消息

本文介绍如何在C++ MFC应用中处理WM_MOUSELEAVE消息,通过添加BOOL型变量m_bMouseLeave记录鼠标状态,并在OnMouseMove中使用_TrackMouseEvent进行设置。当接收到WM_MOUSELEAVE消息时,执行特定操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想要在鼠标离开窗口时作一些处理,却发现不能通过ClassWizard直接添加WM_MOUSELEAVE消息处理,查了一番资料,最终通过_TrackMouseEvent函数解决了问题。该函数原型如下,具体参数含义可以参考MSDN:

根据参数的不同,该函数会向窗口发送四种不同的消息WM_NCMOUSEHOVER、 WM_NCMOUSELEAVE、 WM_MOUSEHOVER、 WM_MOUSELEAVE。分别对应鼠标在非客户区悬停、鼠标离开非客户区、鼠标在客户区悬停、鼠标离开客户区。WM_MOUSEHOVER和WM_MOUSELEAVE有点特殊,每当一个消息产生的时候,如果我们想继续跟踪这个消息,那么我们要重新调用TrackMouseEvent函数。处理鼠标离开消息的步骤如下:
  • 首先在视类中添加一个BOOL型成员变量m_bMouseLeave,用来指示鼠标是否已离开视图区域,并在构造函数中初始化为TRUE。
  • 影响OnMouseMove消息,在OnMouseMove消息处理中添加如下代码:

 

  • BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加消息映射:

       ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)

  • 头文件中添加鼠标离开消息处理原型声明,并在源文件中添加函数实现:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值