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

相关文章推荐

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

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

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

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

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

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

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

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

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

相关消息:WM_NCHITTEST MSDN描述:The WM_NCHITTEST message is sent to a window when the cursor moves, or whe...

Java程序中取消窗口标题栏以及边框,并使窗口可以相应鼠标事件,被鼠标拖动;设置JFrame背景色

我们在编程的时候,如果嫌窗口自己的边框以及标题栏难看,我们可以取消它。 1、取消边框以及标题栏: 调用函数setUndecorated(true);即可   在我们取消窗口的边框以及标题栏以后...

鼠标事件处理java程序设计

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

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