测试鼠标是否在窗口内,以及鼠标的离开

原创 2001年06月14日 22:09:00
测试鼠标是否在窗口内,以及鼠标的离开

  以下给出两种跟踪鼠标是否在窗口内的方法
一、使用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;
}
    

如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局。 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置。 在处理子窗口鼠标...
  • u013394556
  • u013394556
  • 2014年08月25日 17:04
  • 1337

opencv 检测鼠标的点击和移动

只需要定义一个callback的函数, 然后将这个函数附属到我们定义的一个opencv的window上即可, 这样每当鼠标在窗口处发生动作的时候, 就会调用callback函数。  点击鼠标的时候, ...
  • a130737
  • a130737
  • 2015年01月25日 13:22
  • 1539

鼠标移上去,弹出说明框,移开则消失

1、设置css样式: .rule-popup-box{display: none; position: absolute; top: 0; right: 0; z-index: 100; w...
  • ailo555
  • ailo555
  • 2016年07月26日 22:04
  • 2025

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

首先,WM_MOUSELEAVE是鼠标离开窗口时发出的消息,但是这个消息与普通消息不同,要收到WM_MOUSELEAVE消息必须先调用TrackMouseEvent,并且每调用一次TrackMouse...
  • vigoss331
  • vigoss331
  • 2016年09月23日 14:59
  • 483

处理鼠标离开窗口的消息 (WM_MOUSELEAVE)

处理鼠标离开窗口的消息 (WM_MOUSELEAVE)WM_MOUSELEAVE 是鼠标离开窗口时发出的消息,但是这个消息与普通的鼠标消息不同,要收到WM_MOUSELEAVE消息必须先调用Track...
  • Augusdi
  • Augusdi
  • 2013年05月24日 00:04
  • 1502

精彩编程与编程技巧-用Form 的 Mouse_Move事件来检查鼠标是否在窗口内:...

  • 2009年10月10日 19:39
  • 905B
  • 下载

TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息(转)

TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型: BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lp...
  • GameRefer
  • GameRefer
  • 2012年08月03日 08:04
  • 675

windows应用开发由浅入深(三)有关鼠标事件--设置鼠标点击测试值实现非标题栏拖动窗口

相关消息:WM_NCHITTEST MSDN描述:The WM_NCHITTEST message is sent to a window when the cursor moves, or whe...
  • u011546766
  • u011546766
  • 2014年03月06日 10:49
  • 859

Ajax实现无刷新验证用户名是否存在 (使用AjaxPro.2.dll)(当鼠标离开输入框时,即使判断用户名是否存在)

Ajax实现无刷新验证用户名是否存在 (使用AjaxPro.2.dll)(当鼠标离开输入框时,即使判断用户名是否存在) (AjaxPro.2.dll学习参考:http://www.cnblogs.c...
  • lyx_1094562530
  • lyx_1094562530
  • 2013年08月28日 11:22
  • 547

VB检测鼠标坐标并判断是否离开了图片

  • 2010年06月26日 09:44
  • 144KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:测试鼠标是否在窗口内,以及鼠标的离开
举报原因:
原因补充:

(最多只允许输入30个字)