c++实现按钮HOVER效果

本文介绍了一个名为CVMButton的类如何通过设置鼠标事件跟踪来响应鼠标移动、悬停和离开的操作。文章详细展示了成员变量的定义、构造函数中的初始化过程、消息处理函数的添加及其实现细节。

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

1.在类中定义成员变量:

//鼠标事件跟踪
TRACKMOUSEEVENT * TME;
BOOL m_IsCanTrack;

2.构造函数重初始化:

m_IsCanTrack = TRUE;
TME = new TRACKMOUSEEVENT;

3.添加消息函数:

afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnMouseHover(UINT nFlags, CPoint point);
afx_msg void OnMouseLeave();

ON_WM_MOUSEMOVE()
ON_WM_MOUSEHOVER()
ON_WM_MOUSELEAVE()

4.函数实现:

void CVMButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rc;
GetClientRect(rc);

if (m_IsCanTrack)
{
TME->cbSize = sizeof(TRACKMOUSEEVENT);
TME->dwFlags = TME_LEAVE | TME_HOVER;
TME->dwHoverTime = 10;
TME->hwndTrack = m_hWnd;

if (::_TrackMouseEvent(TME))
{
m_IsCanTrack = FALSE;
}
}
CButton::OnMouseMove(nFlags, point);
}

void CVMButton::OnMouseHover(UINT nFlags, CPoint point)
{
m_IsCanTrack = FALSE;
ButtonStateMov();

CButton::OnMouseHover(nFlags, point);
}

void CVMButton::OnMouseLeave()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_IsCanTrack = TRUE;
ButtonStateSet(m_state);

CButton::OnMouseLeave();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑兔子JH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值