测试鼠标是否在窗口内,以及鼠标的离开
以下给出两种跟踪鼠标是否在窗口内的方法
一、使用SetCapture(),OnMouseMove()等判断鼠标位置
//设置一个状态量用于记录和标识鼠标是否在窗口内
//BOOL m_bOverControl;
void C?????::OnMouseMove(UINT nFlags, CPoint point)
{
CStatic::OnMouseMove(nFlags, point);
//如果鼠标还在窗口内
if (m_bOverControl)
{
CRect rect;
GetClientRect(rect);
//鼠标位置离开了客户区,解除鼠标捕获,并改写状态量m_bOverControl
if (!rect.PtInRect(point))
{
m_bOverControl = FALSE;
ReleaseCapture();
//......
//其他鼠标离开时的操作
//eg: ReDrawWindow();
return;
}
}
//如果鼠标进入窗口,置鼠标捕获,状态参量
else
{
m_bOverControl = TRUE;
//
//其他鼠标进入时的操作
//eg: ReDrawWindow();
SetCapture();
}
}
二、使用TrackMouseEvent()在鼠标离开窗口时发送WM_MOUSELEAVE消息
使用TrackMouseEvent()还可以判断鼠标的停留,并发送WM_MOUSEHOVER消息
//设置一个状态量用于记录和标识鼠标是否在窗口内
//BOOL m_bMouseTracking;
//处理鼠标移动消息
void CSomeWnd::OnMouseMove(UINT nFlags, CPoint point)
{
//接收到WM_MOUSEMOVE,而m_bMouseTracking为假时,鼠标进入窗口。
//设置_TrackMouseEvent
if (!m_bMouseTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
//监控鼠标离开
tme.dwFlags = TME_LEAVE;
tme.hwndTrack = this->m_hWnd;
if (::_TrackMouseEvent(&tme))
{
m_bMouseTracking = TRUE;
//
//其他鼠标进入时的操作
//
}
}
CView::OnMouseMove(nFlags, point);
}
//
//处理WM_MOUSELEAVE消息
//
//消息处理函数声明
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
//消息映射
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
//处理函数定义
LRESULT CSomeWnd::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
//
//其他鼠标离开时的操作
//
//重置状态量
m_bMouseTracking = FALSE;
return TRUE;
}
win32鼠标
原创举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Win10 计算机入域后安装程序、打开重要设置都要输入域管理员密码才行
环境:Windows sever 2019AD域域内客户端Wi
AD域 win10 服务器 用户账户 解决方案 -
c# 获取机器硬件信息 (硬盘,cpu,内存等)
using System; using System
.net 当前目录 当前用户 -
Win11 2022 正式版曝光,速度更快、桌面小部件功能焕然一新
Windows 11采取了一年一更的迭代策略,2022版本目前正紧锣密鼓开发中。据报道,系统内部研发代号Sun Valley 2,将带来诸多
微软 Windows Windows11 经验分享 科技热点 -
2022Fiddler抓取HTTPS最全(强)攻略
对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler。但是初学时,大家对于fiddler如何抓取HTTPS难免走歪路,也许你一步步按着网上的帖子成功了,这自然是极好
软件测试 测试工程师 自动化测试 fiddler https -
qml开发笔记(七):输入元素鼠标输入MouseArea和键盘输入Keys
qml学习笔记(七):输入元素鼠标输入M
MouseArea Keys 鼠标输入 按键输入 捕捉输入 -
31【源码】数据可视化:基于 Echarts + Python Flask 动态实时【拖放】大屏 - 数据分析看板
我是 YYDataV数据可视化专注于数据可视化大屏,工厂扫码装箱系统等我的微信 6550523,多多交流 ~目录效果展示1.
python javascript echarts 前端 可视化