VC编程时关于 WM_MOUSEENTER 和 WM_MOUSELEAVE消息

本文介绍了在VC编程中如何处理WM_MOUSEENTER和WM_MOUSELEAVE消息。由于这两个消息并非默认发送,需要通过TrackMouseEvent API并在WM_MOUSEMOVE消息处理函数中进行设置。文中提供了一种实现方法,包括添加变量、消息处理函数和消息映射,并解释了TrackMouseEvent的工作原理。作者还提到,可以自定义计时器来检测鼠标是否离开,以替代使用TrackMouseEvent。
摘要由CSDN通过智能技术生成
关于 WM_MOUSEENTER 和 WM_MOUSELEAVE消息

这两个消息比较古怪,虽然你能找到他们的定义,看起来也似乎挺有用,但是却接收不到。
如果要处理这两个消息需要手动在WM_MOUSEMOVE消息处理函数中添加:

添加变量:
BOOL m_bTracking;
m_bTracking = FALSE;

添加消息处理函数:
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);

用ON_MESSAGE宏进行消息映射:
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)

在WM_MOUSEMOVE消息处理函数中进行处理:
void CDemo::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default

    if (!m_bTracking)
    {
        TRACKMOUSEEVENT tme;
        tme.cbSize = sizeof(tme);
        tme.hwndTrack = m_hWnd;
        tme.dwFlags = TME_LEAVE | TME_HOVER;
        tme.dwHoverTime = 1;
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值