mfc 如何捕获应用程序窗口以外的鼠标事件

原创 2011年01月14日 11:02:00

一般应用程序当中的鼠标事件只能争对应用程序窗口内部有效,如果点击应用程序以外的窗口,例如点击其它应用程序窗口等,这个时候,鼠标消息是不会发送给我们的应用程序窗口,更不会激发事件。这样怎么处理呢。我们可以利用mfc窗口中的windows消息处理函数,来处理我们的鼠标或键盘事件操作如下:

首先在我们需要开启捕获的事件中加入鼠标捕获

SetCapture();

然后在WindowProc中加入如下代码:

LRESULT CMyxgsdlgmainbg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
 // TODO: 在此添加专用代码和/或调用基类
 POINT point;
 CRect rect;
 switch   (message)
     {
 case WM_LBUTTONDOWN:
  ;
 case WM_LBUTTONDBLCLK:
  ;
 case WM_RBUTTONDOWN:
  ;
 case WM_RBUTTONDBLCLK:
  ;
 case WM_MBUTTONDOWN:
  ;
 case WM_MBUTTONDBLCLK:
  GetCursorPos(&point);
  ScreenToClient(&point);
  CRect   rect;
  AfxGetMainWnd()-> GetWindowRect(&rect);
  ScreenToClient(&rect);
  if(!rect.PtInRect(point)) //判断是否在本应用程序窗口内
  {
   isshowmain=false;
  }
  KillTimer(8);
  issettimer8=false;
  ReleaseCapture();

  break;
 }
 return CDialog::WindowProc(message, wParam, lParam);
}

ReleaseCapture();//该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中

在WPF中强制捕获鼠标,鼠标移出控件后依然何以获取鼠标事件

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件。例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开。在这个过程中,控...
  • Libby1984
  • Libby1984
  • 2017年03月17日 17:07
  • 1473

windows系统对鼠标点击事件的处理过程

Windows用这个消息来做什么? “HITTEST”就是“命中测试”的意思,WM_NCHITTEST消息用来获取鼠标当前命中的位置。 WM_NCHITTEST的消息响应函数会根据鼠标当前的坐标来判...
  • down_login
  • down_login
  • 2014年03月12日 10:58
  • 2335

如何在JavaScript捕获鼠标事件

前言 为页面增加与用户的交互是JavaScript的基本功能之一。为此,我们需要一些机制来检测用户和程序在特定时间 在做什么。比如鼠标在浏览器的什么位置,用户是否点击鼠标或按了键,页面是否完整...
  • GULINHAI12
  • GULINHAI12
  • 2015年09月04日 08:47
  • 4368

Windows应用程序-键盘鼠标事件

设计一个窗口,在该窗口中练习键盘的响应,要求如下: (1) 单击键盘上的向上箭头时,窗口中显示“You had hitted the up key” (2) 单击键时,窗口中显示“You ...
  • sinat_32582203
  • sinat_32582203
  • 2017年06月14日 18:19
  • 89

MFC文档(SDI)应用:绘图程序(画圆、画线、鼠标事件)

1、 在客户区输出一条顺时针45度的直线、一个正方形、一个大圆; 2、 在客户区输出一个图标; 3、 当按下鼠标左键时,将以鼠标坐标为圆心画直径为20个单位的小圆;...
  • rl529014
  • rl529014
  • 2016年04月21日 20:48
  • 1667

qt实现类似QQ伸缩窗口--鼠标事件应用

  • 2016年06月06日 00:35
  • 34.7MB
  • 下载

qt实现类似QQ伸缩窗口--鼠标事件应用

上一章节讲了qt鼠标事件实现,获取鼠标参数的方法。这一讲主要讲怎么应用上讲的鼠标事件实现一个小功能。  qq好友对话框右侧 未展开时如图: 鼠标移动到 “隐藏侧边”处单击可以隐藏侧边,隐藏后效果如...
  • hiwubihe
  • hiwubihe
  • 2014年08月19日 10:30
  • 3224

VC6捕获鼠标事件(移动、单击等)的一些总结(MFC消息、DriectInput、钩子)

鼠标事件,无非是WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE(就说这基本的三个命令吧),开始以为很容易获取这些事件,但在实现过程中,并不是想象中的那么简单: ...
  • u010143011
  • u010143011
  • 2015年06月03日 10:02
  • 849

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

精彩编程与编程技巧-让窗口拒绝接受键盘和鼠标事件...

  • 2009年10月10日 21:29
  • 276B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mfc 如何捕获应用程序窗口以外的鼠标事件
举报原因:
原因补充:

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