WindowFromPoint和ChildWindowFromPoint函数的使用

HWND WindowFromPoint(
    POINT Point
);
功能:返回包含点的窗口句柄,Point参数指屏幕坐标。
如果不存在窗口包含这个点,则返回NULL。如果窗口无效或者隐藏,则返回NULL。
通过测试,发现获取部分控件句柄时,返回的都是父窗口的句柄。包括Static Text, GroupBox等等。

实例: 

 1 void CTestDlg::OnTest() 2 {
 3     POINT pt;
 4     GetCursorPos(&pt);//获取坐标
 5 
 6     HWND hHandle = ::WindowFromPoint(pt);
 7 
 8         if (hHandle == m_hWnd)
 9     {
10         MessageBox("OK");
11     }
12 }

HWND ChildWindowFromPoint(
  HWND hWndParent,   //handle to parent window
  POINT Point        //the coordinates(relative to hWndParent) of the point to be checked
);
功能:返回包含这个点的窗口句柄,即使窗口隐藏或者处于无效状态。(需要指定某个容器窗体,返回该容器窗体中包含点的窗口句柄。)
如果点不在父窗口内,则返回NULL,如果点在父窗口内,但不在任何子窗口上,则返回父窗口的句柄。
另外,特别要注意的是:参数Point不是屏幕坐标,而是相对于容器窗口的坐标。
实例:

1 void CTestDlg::OnOK() 
 2 {
 3     POINT pt;
 4     GetCursorPos(&pt);
 5 
 6     BOOL bOK = ::ScreenToClient(m_hWnd, &pt);
 7     if (!bOK)
 8     {
 9         return;
10     }
11 
12     HWND hHandle = ::ChildWindowFromPoint(m_hWnd, pt);
13     if (hHandle == m_button.m_hWnd)
14     {
15         MessageBox("OK");
16     }
17 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值