_TrackMouseEvent的用法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

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

  }

}

 

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

相关推荐

TrackMouseEvent 跟踪在指定的时间范围内,鼠标指针何时离开窗口或鼠标悬停在窗口上。

由程序主动激活 触发WM_MOUSEHOVER WM_MOUSELEAVE 消息,这个函数常用于创建动态界面元素、弹出菜单、工具提示等。

成长需要沉淀。 519

TrackMouseEvent例子

TrackMouseEvent

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

http://blog.csdn.net/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的博客 948

TrackMouseEvent处理鼠标消息

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

chinayu2007的专栏 625

关于TrackMouseEvent用法总结

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

sunliangyuan的专栏 1万+

TrackMouseEvent用法

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

zhousunmuhua的专栏 1003

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

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

twater2000的专栏 1218

TrackMouseEvent函数

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

AmHuman的专栏 4785

TrackMouseEvent与_TrackMouseEvent

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

tianshangyikexing的专栏 741

TrackMouseEvent介绍

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

babyyang1213的专栏 1381

TrackMouseEvent函数实现鼠标停留响应

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

脑袋不好使 701

MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave

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

diaomo9737的博客 336

关于API函数TrackMouseEvent

 使用API函数TrackMouseEvent时,编译器提示"未定义的标识符"    并且,与该函数有关的内容,如TRACKMOUSEEVENT结构等,也都如此.   察看头文件,此函数和其相关内容是定义在winuser.h中的.     我已经在开头包含了windows.h .             这种情况可以有如下解决方案:    1.在stdafx.h 最开头加一句  #de

swandream的专栏 1116

TrackMouseEvent &

CMyButton 中用到的几个Windows API  TrackMouseEvent   函数功能:当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。   函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);   参数:   lpEventTrack;指向结构TR

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值