您的位置:首页 > 其它

WindowFromPoint和ChildWindowFromPoint函数的使用

2014-09-12 11:12 274 查看
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 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: