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不是屏幕坐标,而是相对于容器窗口的坐标。
实例:
当鼠标放在m_button上时,返回OK。

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 }