VC获取鼠标所在位置窗口

 

编号:A3GS_TV20100122003

 

描述:

 

本文以实例代码的形式讲述了在VC中下实现鼠标所在位置窗口的获取。

 

例子代码

 

请下载本文附带例子代码。

 

技术实现:

 

头文件

 

#include < winuser.h>

 

技术说明

 

实现本功能主要就是一个WindowFromPoint系统API的调用,本API的详细信息请参见MSDN相关文档。本文以对话框窗口为例子一说明如果获取当前鼠标所在位置下的窗口信息。实现步骤如下:

 

1.  编写WM_MOUSEMOVE消息响应函数:

    void CTestDlg::OnMouseMove(UINT nFlags, CPoint point)

{

          CWnd * pWnd = WindowFromPoint(point);

          if (AfxIsValidAddress(pWnd,sizeof(CWnd)))

              if (::IsChild(m_hWnd,pWnd->m_hWnd))

              {

                    CString str;

                  pWnd->GetWindowText(str);

                  SetWindowText(str);

              }

          CDialog::OnMouseMove(nFlags, point);

}

2.  重定PreTranslateMessage函数

在此函数里当我们发现是WM_MOUSEMOVE消息时调用我们上面写的OnMouseMove函数。本函数代码如下:

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)

{

          if (pMsg->message==WM_MOUSEMOVE)

          {

               CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam));

               ::ClientToScreen(pMsg->hwnd,&point);

               //第一个步骤自己写的函数

               OnMouseMove(0,point);

          }

          return CDialog::PreTranslateMessage(pMsg);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值